introdução à lógica de programação - ufba
TRANSCRIPT
Universidade Federal da Bahia
Departamento de Ciecircncia da Computaccedilatildeo
IN T R O D U Ccedil Atilde O Agrave LOacute G I C A D E
PR O G R A M A Ccedil Atilde O
MAT 146
Revisada em Janeiro de 2004
Claudia Gama claudiagufbabr
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Caro Aluno Esta apostila foi elaborada a partir das minhas notas de aula e dos livros da bibliografia recomendada Ela visa auxiliar na compreensatildeo dos conceitos abordados ao longo do curso bem como promover a praacutetica de algoritmos com exerciacutecios de fixaccedilatildeo e exerciacutecios propostos Nela vocecirc vai encontrar bull Resumo dos principais toacutepicos bull Referecircncias bibliograacuteficas bull Exerciacutecios de fixaccedilatildeo bull Exerciacutecios propostos (alguns incluem soluccedilatildeo) Mas atenccedilatildeo esta apostila deve ser usada somente como material complementar e nunca como uacutenica fonte de estudo
Profordf Claudia Gama
Legenda
Na apostila satildeo usados alguns siacutembolos para chamar a atenccedilatildeo de partes relevantes e ajudar na organizaccedilatildeo do conteuacutedo da apostila Veja os siacutembolos e seus significados abaixo
Sugestatildeo de leitura de capiacutetulo ou seccedilotildees de um livro A leitura eacute sugerida para obter-se um entendimento completo do toacutepico apresentado na apostila
Sugestotildees de pesquisas na Internet de assuntos complementares ou curiosidades
Exerciacutecios de Fixaccedilatildeo satildeo exerciacutecios simples para verificaccedilatildeo do entendimento de conceitos
Sugestatildeo de Exerciacutecios Complementares em livros da bibliografia
Exerciacutecios Propostos exerciacutecios para solidificar o entendimento Altamente
recomendaacuteveis
Texto Complementar e Exerciacutecios 2
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
IacuteNDICE
Parte I - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo 1 Algoritmos ---------------------------------------------------------------------- 6
11 Exemplo Construindo um Algoritmo ------------------------------- 6
Exerciacutecios Propostos----------------------------------------------------- 8 2 Resoluccedilatildeo de Problemas atraveacutes de Computadores ----------------------- 9
21 Programaccedilatildeo ------------------------------------------------------------ 9 3 Algoritmos Computacionais -------------------------------------------------11
31 Diretrizes para Elaboraccedilatildeo de Algoritmos -------------------------11 32 Descriccedilatildeo de Algoritmos ---------------------------------------------12 33 Estruturas de Dados --------------------------------------------------13 34 Operaccedilotildees Baacutesicas ----------------------------------------------------15
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------17 35 Estruturas de Controle ------------------------------------------------18
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------21 36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos --------22 37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos ------------24
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------25
Exerciacutecios Propostos----------------------------------------------------25
Apecircndices ndash Parte I 1 SOLUCcedilOtildeES DE EXERCIacuteCIOS 2 NOTACcedilAtildeO PARA FLUXOGRAMAS
Texto Complementar e Exerciacutecios 3
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Parte II - Loacutegica de Programaccedilatildeo com Pascal 4 Linguagens de Programaccedilatildeo de Alto Niacutevel--------------------------------27
41 Tipos de Linguagens de Programaccedilatildeo ------------------------------28 42 Compilaccedilatildeo e Execuccedilatildeo de Programas -----------------------------28
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------29 5 A Linguagem de Programaccedilatildeo Pascal --------------------------------------30
51 Estrutura Geral ---------------------------------------------------------30 52 Estruturas de Dados em Pascal --------------------------------------30
521 Tipos simples de dados----------------------------------------30 522 Tipos simples definidos pelo usuario------------------------31
53 Estruturas de Controle ------------------------------------------------32
Exerciacutecios Propostos----------------------------------------------------35 54 Estruturas de Dados Tipos de Dados Estruturados --------------36
541 Vetores ----------------------------------------------------------36
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------39 542 Matrizes ---------------------------------------------------------40
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------41 55 Algoritmos de Classificaccedilatildeo e Busca -------------------------------42 56 Procedimentos e Funccedilotildees---------------------------------------------44
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------46 57 Registros e Tabelas----------------------------------------------------49 58 Arquivos Diretos e Sequumlenciais -------------------------------------51
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------53 59 Variaacuteveis Dinacircmicas Ponteiros -------------------------------------55
Apecircndices ndash Parte II 3 SOLUCcedilOtildeES DE EXERCIacuteCIOS - PROGRAMAS PASCAL
Texto Complementar e Exerciacutecios 4
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Referecircncias Bibliograacuteficas Forbellone Andreacute L V Eberspaumlcher Henri F Loacutegica de Programaccedilatildeo - A Construccedilatildeo de
Algoritmos e Estruturas de Dados Makron Books 1993 Gottfried Byron B Programaccedilatildeo em Pascal Schaum McGraw Hill 1988 Tremblay Jean-Paul Bunt Richard B Ciecircncia dos Computadores - Uma Abordagem
Algoritmica McGraw Hill 1983 Guimaratildees Lages Algoritmos e Estruturas de Dados Livros Teacutecnicos e Cientiacuteficos Editora
1985 Wirth Niklaus Algoritmos e Estruturas de Dados Editora PHB 1986 Ziviani Nivio Projeto de Algoritmos Livraria Pioneira Editora Saliba Walter L C Teacutecnicas de Programaccedilatildeo - Uma Abordagem Estruturada Makron Books Carvalho Seacutergio E R Introduccedilatildeo agrave Programaccedilatildeo com Pascal Editora Campus Farrer Harry et al Pascal Estruturado Editora Guanabara Dois 1985 Shmitz Eber Teles Antocircnio Pascal e Teacutecnicas de Programaccedilatildeo Livros Teacutecnicos e Cientiacuteficos Editora 1986
Texto Complementar e Exerciacutecios 5
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Caro Aluno Esta apostila foi elaborada a partir das minhas notas de aula e dos livros da bibliografia recomendada Ela visa auxiliar na compreensatildeo dos conceitos abordados ao longo do curso bem como promover a praacutetica de algoritmos com exerciacutecios de fixaccedilatildeo e exerciacutecios propostos Nela vocecirc vai encontrar bull Resumo dos principais toacutepicos bull Referecircncias bibliograacuteficas bull Exerciacutecios de fixaccedilatildeo bull Exerciacutecios propostos (alguns incluem soluccedilatildeo) Mas atenccedilatildeo esta apostila deve ser usada somente como material complementar e nunca como uacutenica fonte de estudo
Profordf Claudia Gama
Legenda
Na apostila satildeo usados alguns siacutembolos para chamar a atenccedilatildeo de partes relevantes e ajudar na organizaccedilatildeo do conteuacutedo da apostila Veja os siacutembolos e seus significados abaixo
Sugestatildeo de leitura de capiacutetulo ou seccedilotildees de um livro A leitura eacute sugerida para obter-se um entendimento completo do toacutepico apresentado na apostila
Sugestotildees de pesquisas na Internet de assuntos complementares ou curiosidades
Exerciacutecios de Fixaccedilatildeo satildeo exerciacutecios simples para verificaccedilatildeo do entendimento de conceitos
Sugestatildeo de Exerciacutecios Complementares em livros da bibliografia
Exerciacutecios Propostos exerciacutecios para solidificar o entendimento Altamente
recomendaacuteveis
Texto Complementar e Exerciacutecios 2
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
IacuteNDICE
Parte I - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo 1 Algoritmos ---------------------------------------------------------------------- 6
11 Exemplo Construindo um Algoritmo ------------------------------- 6
Exerciacutecios Propostos----------------------------------------------------- 8 2 Resoluccedilatildeo de Problemas atraveacutes de Computadores ----------------------- 9
21 Programaccedilatildeo ------------------------------------------------------------ 9 3 Algoritmos Computacionais -------------------------------------------------11
31 Diretrizes para Elaboraccedilatildeo de Algoritmos -------------------------11 32 Descriccedilatildeo de Algoritmos ---------------------------------------------12 33 Estruturas de Dados --------------------------------------------------13 34 Operaccedilotildees Baacutesicas ----------------------------------------------------15
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------17 35 Estruturas de Controle ------------------------------------------------18
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------21 36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos --------22 37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos ------------24
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------25
Exerciacutecios Propostos----------------------------------------------------25
Apecircndices ndash Parte I 1 SOLUCcedilOtildeES DE EXERCIacuteCIOS 2 NOTACcedilAtildeO PARA FLUXOGRAMAS
Texto Complementar e Exerciacutecios 3
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Parte II - Loacutegica de Programaccedilatildeo com Pascal 4 Linguagens de Programaccedilatildeo de Alto Niacutevel--------------------------------27
41 Tipos de Linguagens de Programaccedilatildeo ------------------------------28 42 Compilaccedilatildeo e Execuccedilatildeo de Programas -----------------------------28
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------29 5 A Linguagem de Programaccedilatildeo Pascal --------------------------------------30
51 Estrutura Geral ---------------------------------------------------------30 52 Estruturas de Dados em Pascal --------------------------------------30
521 Tipos simples de dados----------------------------------------30 522 Tipos simples definidos pelo usuario------------------------31
53 Estruturas de Controle ------------------------------------------------32
Exerciacutecios Propostos----------------------------------------------------35 54 Estruturas de Dados Tipos de Dados Estruturados --------------36
541 Vetores ----------------------------------------------------------36
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------39 542 Matrizes ---------------------------------------------------------40
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------41 55 Algoritmos de Classificaccedilatildeo e Busca -------------------------------42 56 Procedimentos e Funccedilotildees---------------------------------------------44
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------46 57 Registros e Tabelas----------------------------------------------------49 58 Arquivos Diretos e Sequumlenciais -------------------------------------51
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------53 59 Variaacuteveis Dinacircmicas Ponteiros -------------------------------------55
Apecircndices ndash Parte II 3 SOLUCcedilOtildeES DE EXERCIacuteCIOS - PROGRAMAS PASCAL
Texto Complementar e Exerciacutecios 4
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Referecircncias Bibliograacuteficas Forbellone Andreacute L V Eberspaumlcher Henri F Loacutegica de Programaccedilatildeo - A Construccedilatildeo de
Algoritmos e Estruturas de Dados Makron Books 1993 Gottfried Byron B Programaccedilatildeo em Pascal Schaum McGraw Hill 1988 Tremblay Jean-Paul Bunt Richard B Ciecircncia dos Computadores - Uma Abordagem
Algoritmica McGraw Hill 1983 Guimaratildees Lages Algoritmos e Estruturas de Dados Livros Teacutecnicos e Cientiacuteficos Editora
1985 Wirth Niklaus Algoritmos e Estruturas de Dados Editora PHB 1986 Ziviani Nivio Projeto de Algoritmos Livraria Pioneira Editora Saliba Walter L C Teacutecnicas de Programaccedilatildeo - Uma Abordagem Estruturada Makron Books Carvalho Seacutergio E R Introduccedilatildeo agrave Programaccedilatildeo com Pascal Editora Campus Farrer Harry et al Pascal Estruturado Editora Guanabara Dois 1985 Shmitz Eber Teles Antocircnio Pascal e Teacutecnicas de Programaccedilatildeo Livros Teacutecnicos e Cientiacuteficos Editora 1986
Texto Complementar e Exerciacutecios 5
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
IacuteNDICE
Parte I - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo 1 Algoritmos ---------------------------------------------------------------------- 6
11 Exemplo Construindo um Algoritmo ------------------------------- 6
Exerciacutecios Propostos----------------------------------------------------- 8 2 Resoluccedilatildeo de Problemas atraveacutes de Computadores ----------------------- 9
21 Programaccedilatildeo ------------------------------------------------------------ 9 3 Algoritmos Computacionais -------------------------------------------------11
31 Diretrizes para Elaboraccedilatildeo de Algoritmos -------------------------11 32 Descriccedilatildeo de Algoritmos ---------------------------------------------12 33 Estruturas de Dados --------------------------------------------------13 34 Operaccedilotildees Baacutesicas ----------------------------------------------------15
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------17 35 Estruturas de Controle ------------------------------------------------18
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------21 36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos --------22 37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos ------------24
Exerciacutecios de Fixaccedilatildeo----------------------------------------------------25
Exerciacutecios Propostos----------------------------------------------------25
Apecircndices ndash Parte I 1 SOLUCcedilOtildeES DE EXERCIacuteCIOS 2 NOTACcedilAtildeO PARA FLUXOGRAMAS
Texto Complementar e Exerciacutecios 3
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Parte II - Loacutegica de Programaccedilatildeo com Pascal 4 Linguagens de Programaccedilatildeo de Alto Niacutevel--------------------------------27
41 Tipos de Linguagens de Programaccedilatildeo ------------------------------28 42 Compilaccedilatildeo e Execuccedilatildeo de Programas -----------------------------28
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------29 5 A Linguagem de Programaccedilatildeo Pascal --------------------------------------30
51 Estrutura Geral ---------------------------------------------------------30 52 Estruturas de Dados em Pascal --------------------------------------30
521 Tipos simples de dados----------------------------------------30 522 Tipos simples definidos pelo usuario------------------------31
53 Estruturas de Controle ------------------------------------------------32
Exerciacutecios Propostos----------------------------------------------------35 54 Estruturas de Dados Tipos de Dados Estruturados --------------36
541 Vetores ----------------------------------------------------------36
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------39 542 Matrizes ---------------------------------------------------------40
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------41 55 Algoritmos de Classificaccedilatildeo e Busca -------------------------------42 56 Procedimentos e Funccedilotildees---------------------------------------------44
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------46 57 Registros e Tabelas----------------------------------------------------49 58 Arquivos Diretos e Sequumlenciais -------------------------------------51
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------53 59 Variaacuteveis Dinacircmicas Ponteiros -------------------------------------55
Apecircndices ndash Parte II 3 SOLUCcedilOtildeES DE EXERCIacuteCIOS - PROGRAMAS PASCAL
Texto Complementar e Exerciacutecios 4
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Referecircncias Bibliograacuteficas Forbellone Andreacute L V Eberspaumlcher Henri F Loacutegica de Programaccedilatildeo - A Construccedilatildeo de
Algoritmos e Estruturas de Dados Makron Books 1993 Gottfried Byron B Programaccedilatildeo em Pascal Schaum McGraw Hill 1988 Tremblay Jean-Paul Bunt Richard B Ciecircncia dos Computadores - Uma Abordagem
Algoritmica McGraw Hill 1983 Guimaratildees Lages Algoritmos e Estruturas de Dados Livros Teacutecnicos e Cientiacuteficos Editora
1985 Wirth Niklaus Algoritmos e Estruturas de Dados Editora PHB 1986 Ziviani Nivio Projeto de Algoritmos Livraria Pioneira Editora Saliba Walter L C Teacutecnicas de Programaccedilatildeo - Uma Abordagem Estruturada Makron Books Carvalho Seacutergio E R Introduccedilatildeo agrave Programaccedilatildeo com Pascal Editora Campus Farrer Harry et al Pascal Estruturado Editora Guanabara Dois 1985 Shmitz Eber Teles Antocircnio Pascal e Teacutecnicas de Programaccedilatildeo Livros Teacutecnicos e Cientiacuteficos Editora 1986
Texto Complementar e Exerciacutecios 5
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Parte II - Loacutegica de Programaccedilatildeo com Pascal 4 Linguagens de Programaccedilatildeo de Alto Niacutevel--------------------------------27
41 Tipos de Linguagens de Programaccedilatildeo ------------------------------28 42 Compilaccedilatildeo e Execuccedilatildeo de Programas -----------------------------28
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------29 5 A Linguagem de Programaccedilatildeo Pascal --------------------------------------30
51 Estrutura Geral ---------------------------------------------------------30 52 Estruturas de Dados em Pascal --------------------------------------30
521 Tipos simples de dados----------------------------------------30 522 Tipos simples definidos pelo usuario------------------------31
53 Estruturas de Controle ------------------------------------------------32
Exerciacutecios Propostos----------------------------------------------------35 54 Estruturas de Dados Tipos de Dados Estruturados --------------36
541 Vetores ----------------------------------------------------------36
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------39 542 Matrizes ---------------------------------------------------------40
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------41 55 Algoritmos de Classificaccedilatildeo e Busca -------------------------------42 56 Procedimentos e Funccedilotildees---------------------------------------------44
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------46 57 Registros e Tabelas----------------------------------------------------49 58 Arquivos Diretos e Sequumlenciais -------------------------------------51
Exerciacutecios de Fixaccedilatildeo---------------------------------------------------53 59 Variaacuteveis Dinacircmicas Ponteiros -------------------------------------55
Apecircndices ndash Parte II 3 SOLUCcedilOtildeES DE EXERCIacuteCIOS - PROGRAMAS PASCAL
Texto Complementar e Exerciacutecios 4
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Referecircncias Bibliograacuteficas Forbellone Andreacute L V Eberspaumlcher Henri F Loacutegica de Programaccedilatildeo - A Construccedilatildeo de
Algoritmos e Estruturas de Dados Makron Books 1993 Gottfried Byron B Programaccedilatildeo em Pascal Schaum McGraw Hill 1988 Tremblay Jean-Paul Bunt Richard B Ciecircncia dos Computadores - Uma Abordagem
Algoritmica McGraw Hill 1983 Guimaratildees Lages Algoritmos e Estruturas de Dados Livros Teacutecnicos e Cientiacuteficos Editora
1985 Wirth Niklaus Algoritmos e Estruturas de Dados Editora PHB 1986 Ziviani Nivio Projeto de Algoritmos Livraria Pioneira Editora Saliba Walter L C Teacutecnicas de Programaccedilatildeo - Uma Abordagem Estruturada Makron Books Carvalho Seacutergio E R Introduccedilatildeo agrave Programaccedilatildeo com Pascal Editora Campus Farrer Harry et al Pascal Estruturado Editora Guanabara Dois 1985 Shmitz Eber Teles Antocircnio Pascal e Teacutecnicas de Programaccedilatildeo Livros Teacutecnicos e Cientiacuteficos Editora 1986
Texto Complementar e Exerciacutecios 5
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Referecircncias Bibliograacuteficas Forbellone Andreacute L V Eberspaumlcher Henri F Loacutegica de Programaccedilatildeo - A Construccedilatildeo de
Algoritmos e Estruturas de Dados Makron Books 1993 Gottfried Byron B Programaccedilatildeo em Pascal Schaum McGraw Hill 1988 Tremblay Jean-Paul Bunt Richard B Ciecircncia dos Computadores - Uma Abordagem
Algoritmica McGraw Hill 1983 Guimaratildees Lages Algoritmos e Estruturas de Dados Livros Teacutecnicos e Cientiacuteficos Editora
1985 Wirth Niklaus Algoritmos e Estruturas de Dados Editora PHB 1986 Ziviani Nivio Projeto de Algoritmos Livraria Pioneira Editora Saliba Walter L C Teacutecnicas de Programaccedilatildeo - Uma Abordagem Estruturada Makron Books Carvalho Seacutergio E R Introduccedilatildeo agrave Programaccedilatildeo com Pascal Editora Campus Farrer Harry et al Pascal Estruturado Editora Guanabara Dois 1985 Shmitz Eber Teles Antocircnio Pascal e Teacutecnicas de Programaccedilatildeo Livros Teacutecnicos e Cientiacuteficos Editora 1986
Texto Complementar e Exerciacutecios 5
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
PARTE I INTRODUCcedilAtildeO Agrave LOacuteGICA DE PROGRAMACcedilAtildeO 1 ALGORITMOS
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 01
Definimos Algoritmo como a sequumlecircncia de passos que visam atingir um objetivo bem definido
Os algoritmos satildeo utilizados no dia-a-dia para a soluccedilatildeo dos mais diversos problemas
Alguns exemplos geneacutericos de algoritmos usados no nosso cotidiano satildeo uma
coreografia um manual de instruccedilotildees uma receita de bolo a soluccedilatildeo de uma equaccedilatildeo do 2ordm grau uma pesquisa na lista telefocircnica etc
O que todas essas coisas tem em comum
Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que quando realizadas atingem um objetivo previamente definido
Assim outra definiccedilatildeo para algoritmos poderia ser
Algoritmo eacute a descriccedilatildeo de um conjunto de accedilotildees que obedecidas resultam numa sucessatildeo finita de passos atingindo um objetivo esperado
Dessa forma vemos que o que importa no algoritmo eacute o efeito das accedilotildees para a obtenccedilatildeo do resultado esperado
Satildeo propriedades de algoritmos
bull accedilotildees simples e bem definidas (natildeo ambiacuteguas)
bull sequumlecircncia ordenada de accedilotildees
bull sequumlecircncia finita de passos
11 Exemplo Construindo um Algoritmo Considere o seguinte problema
Temos trecircs hastes Uma das hastes serve de suporte para trecircs discos de tamanhos diferentes Os discos menores satildeo sempre colocados sobre os discos maiores A figura abaixo mostra uma possiacutevel situaccedilatildeo inicial das hastes e discos
Texto Complementar e Exerciacutecios 6
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desejamos mover todos discos para outra haste poreacutem soacute podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho
Soluccedilatildeo Em forma narrativa
Nomeamos as hastes como 1 2 e 3 e os discos como p m e g Considera-se que inicialmente os discos estatildeo na haste 1 Os passos satildeo
1 move o disco p para a haste 2
2 move o disco m para a haste 3
3 move o disco p para a haste 3
4 move o disco g para a haste 2
5 move o disco p para a haste 1
6 move o disco m para a haste 2
7 move o disco p para a haste 2
Podemos tambeacutem representar a soluccedilatildeo em forma graacutefica desenhando as hastes e a posiccedilatildeo dos discos a cada momento (ou passo)
Como podemos ver com 3 discos precisamos de no miacutenimo 7 passos para solucionar o problema Quantos passos seriam necessaacuterios para se mover 4 discos E para n discos
Curiosidade Este problema foi criado m 1883 pelo matemaacutetico francecircs Edouard Lucas (1842-1891) que tambeacutem criou uma lenda curiosa para enunciar o problema Deixo para vocecircs procurarem na Internet a lenda das Torres de Hanoacutei
Texto Complementar e Exerciacutecios 7
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
P1 Temos trecircs recipientes de tamanhos distintos o primeiro com capacidade para 8 litros outro para 5 litros e o terceiro com capacidade para 3 litros O recipiente de 8 litros estaacute totalmente cheio Deseja-se colocar 4 litros em dois recipientes Considere que os recipientes natildeo sejam graduados
P2 Numa determinada noite acontece uma queda de energia Vocecirc sabia que poderia encontrar uma vela na gaveta da cozinha um lampiatildeo embaixo da cama fusiacuteveis de reserva no armaacuterio da sala e foacutesforos na estante da cozinha Descreva a sequumlecircncia de passos que poderia ser utilizada para diagnosticar e resolver o problema o que pode ser previsto em duas possibilidades
a) o fusiacutevel queimou
b) a queda eacute na estaccedilatildeo da companhia eleacutetrica
Exerciacutecios Complementares
Faccedila pelo menos 02 Exerciacutecios Propostos do Livro do Forbellone ndash Cap 1
Visite o site da disciplina e tente resolver os problemas de logica sugeridos
httpwwwimufbabr mat146ProblemaLogica
Texto Complementar e Exerciacutecios 8
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
2 RESOLUCcedilAtildeO DE PROBLEMAS ATRAVEacuteS DE COMPUTADORES
Os computadores podem ser usados de forma eficiente na soluccedilatildeo de certos tipos de problemas Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou satildeo problemas de natureza complexa exigindo a execuccedilatildeo de um grande nuacutemero de passos para alcanccedilar a soluccedilatildeo Basicamente satildeo problemas na aacuterea de processamento de dados e na aacuterea cientiacutefica
O Computador eacute uma ferramenta que permite a realizaccedilatildeo do processamento automaacutetico (ou eletrocircnico) de dados
Define-se por Processamento de Dados qualquer atividade que utilizando informaccedilotildees (ou dados) efetua transformaccedilotildees para obter novas informaccedilotildees (ou dados) como resultado
Dados deEntrada
Dados deSaiacuteda
Processamento(transformaccedilatildeo)
Poreacutem a tarefa desempenhada pelos computadores eacute apenas parte do processo de soluccedilatildeo de problemas
As etapas na soluccedilatildeo de problemas satildeo
i) Entendimento do problema
ii) Criaccedilatildeo de uma sequumlecircncia de operaccedilotildees (ou accedilotildees) que quando executadas produzem a soluccedilatildeo para o problema
iii) Execuccedilatildeo desta sequumlecircncia de operaccedilotildees
iv) Verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo
As etapas de entendimento do problema criaccedilatildeo de sequumlecircncia de accedilotildees e verificaccedilatildeo da adequaccedilatildeo da soluccedilatildeo satildeo tarefas desempenhadas por pessoas Jaacute a execuccedilatildeo das operaccedilotildees pode ser desempenhada por computadores
Os computadores tem a capacidade de executar processos complicados e com grande quantidade de informaccedilotildees com rapidez e confiabilidade
21 Programaccedilatildeo
Programaccedilatildeo eacute a sequumlecircncia de planejamento projeto escrita e testes de instruccedilotildees desempenhadas pelo computador Eacute uma arte e uma ciecircncia Arte porque existem muitas maneiras de se realizar o trabalho de programaccedilatildeo Existe espaccedilo para uma consideraacutevel dose de criatividade Eacute tambeacutem uma ciecircncia porque existem algumas regras que devem ser seguidas porque eacute necessaacuterio o uso de loacutegica e porque existem alguns meacutetodos rigorosos de programaccedilatildeo que asseguram a eficiecircncia economia e a utilidade dos programas gerados
O trabalho de programaccedilatildeo pode se tornar mais faacutecil se o dividirmos sistematicamente em partes menos complexas (esta teacutecnica denomina-se ldquodividir para conquistarrdquo)
Texto Complementar e Exerciacutecios 9
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Um programa eacute considerado confiaacutevel quando conseguir fazer com que o computador cumpra com o objetivo proposto Os programas construiacutedos devem ser eficazes realizando a tarefa definida e eficientes utilizando os melhores meios para realizaacute-la O maior problema na construccedilatildeo de programas eacute a complexidade esta complexidade representa a quantidade de situaccedilotildees diferentes que um problema pode apresentar e que devem ser previstas na soluccedilatildeo do mesmo Portanto ao se construir um programa o objetivo principal eacute vencer a complexidade do problema a ser solucionado A fim de lidar com esta complexidade podemos dividir a programaccedilatildeo em duas fases distintas
Problema
Soluccedilatildeo na formade Algoritmo
Soluccedilatildeo comoum programa
de computador
1
2
Fase de Resoluccedilatildeo do Problema
Fase de Implementaccedilatildeo (ou Codificaccedilatildeo) doAlgoritmo em alguma Ling de Programaccedilatildeo
Modelizaccedilatildeo (ou Resoluccedilatildeo) do Problema determinaccedilatildeo do modelo de soluccedilatildeo para o problema proposto na forma de um algoritmo computacional
Assim a elaboraccedilatildeo de um algoritmo eacute o primeiro passo para a preparaccedilatildeo de um programa de computador Este algoritmo deve ser independente da linguagem de programaccedilatildeo que seraacute utilizada
Implementaccedilatildeo eacute a transformaccedilatildeo (ou codificaccedilatildeo) do algoritmo em alguma Linguagem de Programaccedilatildeo adequada ao modelo elaborado
Leitura complementar definiccedilatildeo de Programaccedilatildeo no livro ldquoAlgoritmos e Estruturas de Dadosrdquo (Wirth)
Definiccedilotildees Importantes
Programas satildeo formulaccedilotildees completas de algoritmos abstratos baseados em representaccedilotildees especiacuteficas de dados [Wirth]
Programaccedilatildeo Estruturada eacute a arte ou teacutecnica de construir e formular algoritmos de forma sistemaacutetica [Wirth]
Texto Complementar e Exerciacutecios 10
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Quem foi Nicklaus Wirth Em 1984 ele recebeu o mais prestigioso precircmio teacutecnico da ACM (Association for Computing Machinery) ndash o ldquoAM Turing Awardrdquo por sua valiosa contribuiccedilatildeo para a computaccedilatildeo O resto deixo para vocecircs pesquisarem Aproveite e procure saber tambeacutem sobre a ACM Qual a relevacircncia dessa associaccedilatildeo O que ela faz
3 ALGORITMOS COMPUTACIONAIS
O algoritmo eacute uma sequumlecircncia de instruccedilotildees onde cada instruccedilatildeo representa uma ACcedilAtildeO que deve ser entendida e realizada Surge entatildeo uma Questatildeo
Como saber se jaacute temos detalhes suficientes em um algoritmo para que a ACcedilAtildeO possa ser entendida e realizada
Vai depender do agente que iraacute executar o Algoritmo No caso de algoritmos computacionais sabemos que o computador possui um conjunto limitado de instruccedilotildees e o algoritmo deve ser expresso nos termos destas instruccedilotildees
O computador utiliza dois conceitos baacutesicos para construir e interpretar algoritmos
Estruturas de Dados para manipulaccedilatildeo das informaccedilotildees
Estruturas de Controle para manipulaccedilatildeo das accedilotildees
31 Diretrizes para a Elaboraccedilatildeo de Algoritmos As diretrizes apresentadas abaixo satildeo geneacutericas e podem ser usadas ou adaptadas na organizaccedilatildeo dos passos que comporatildeo a soluccedilatildeo de um determinado problema (ou seja na criaccedilatildeo de um algoritmo para atingir um objetivo determinado)
1 Identificaccedilatildeo do problema determinar o que se quer resolver ou qual objetivo a ser atingido
2 Identificaccedilatildeo das ldquoentradas de dadosrdquo informaccedilotildees fornecidas a partir das quais se desenvolveratildeo os caacutelculos
3 Identificaccedilatildeo das ldquosaiacutedas de dadosrdquo as informaccedilotildees a serem geradas como resultado
4 Identificaccedilatildeo das regras e limitaccedilotildees do problema ou das limitaccedilotildees do agente executante (ex se o agente fosse uma calculadora natildeo-cientiacutefica iriam existir limitaccedilotildees no caacutelculo de funccedilotildees por exemplo)
5 Determinaccedilatildeo do que deve ser feito para transformar as ldquoentradasrdquo em ldquosaiacutedasrdquo Neste ponto deve ser determinada a sequumlecircncia de accedilotildees que leve agrave soluccedilatildeo do problema Para isto eacute preciso
51 observar as regras e limitaccedilotildees jaacute identificadas
52 determinar accedilotildees possiacuteveis de serem realizadas pelo agente
Texto Complementar e Exerciacutecios 11
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
6 Construccedilatildeo do Algoritmo utilizando uma das formas de representaccedilatildeo de algoritmos (ver Toacutepico 32)
7 Teste da soluccedilatildeo - execuccedilatildeo de todas as accedilotildees do algoritmo seguindo o fluxo estabelecido para verificar se ele estaacute realmente gerando os resultados esperados ou detectar possiacuteveis erros em sua descriccedilatildeo (veja detalhes sobre Teste de Algoritmos no Toacutepico 37)
Exemplo
Imagine o seguinte problema Calcular a meacutedia final dos alunos da 6ordf Seacuterie Os alunos realizaratildeo quatro provas P1 P2 P3 e P4 A Meacutedia Final eacute calculada por
(P1 + P2 + P3 + P4) 4
Para montar o algoritmo proposto faremos trecircs perguntas
a) Quais satildeo os dados de entrada
R Os dados de entrada satildeo P1 P2 P3 e P4
b) Qual seraacute o processamento a ser utilizado
R O procedimento seraacute somar todos os dados de entrada e dividi-los por 4 (quatro)
(P1 + P2 + P3 + P4)4
c) Quais seratildeo os dados de saiacuteda
R O dado de saiacuteda seraacute a meacutedia final
32 Descriccedilatildeo de Algoritmos
A descriccedilatildeo de um algoritmo de forma clara e faacutecil de ser seguida ajuda no seu desenvolvimento depuraccedilatildeo (correccedilatildeo de erros) e a subsequente transformaccedilatildeo do mesmo num programa
Descriccedilatildeo Narrativa
Especificaccedilatildeo verbal dos passos em linguagem natural
Desvantagens a linguagem natural eacute prolixa e imprecisa e frequumlentemente pouco confiaacutevel como um veiacuteculo de transferir informaccedilatildeo
Sua utilizaccedilatildeo pode ser adotada entretanto para a apresentaccedilatildeo de comentaacuterios sobre o algoritmo (ou parte dele) esclarecendo ou realccedilando pontos especiacuteficos
Fluxograma
Uso de ilustraccedilotildees graacuteficas para transmitir informaccedilotildees (Ex Gerais mapas diagramas explicativo para montagem de aparelhos etc)
Um fluxograma mostra de forma graacutefica a loacutegica de um algoritmo enfatizando passos individuais e o fluxo de execuccedilatildeo
Texto Complementar e Exerciacutecios 12
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Desvantagens utilizaccedilatildeo questionaacutevel de fluxogramas detalhados pois obscurecem a estrutura do programa
Para algoritmos computacionais usaremos os Diagramas de Nassi-Schneidermman (Veja Apecircndice II no final )
Linguagem Algoriacutetmica ou Pseudolinguagem
Linguagem especial para expressatildeo de algoritmos funciona como uma linguagem simplificada de programaccedilatildeo utilizando expressotildees concisas e preacute-definidas para representar as accedilotildees e o fluxo de execuccedilatildeo Eacute uma descriccedilatildeo textual estruturada e regida por regras que descrevem os passos executados no algoritmo Utiliza-se palavras-chaves indentaccedilatildeo apenas um passo por linha normalmente usa-se um siacutembolo para indicar o final de um passo (como por exemplo o ponto-e-virgula ldquordquo) etc Usaremos o Portugol pois ela possui uma estrutura similar ao Pascal
Exemplo Duas representaccedilotildees para o algoritmo do problema das medias dos alunos da 6ordf Seacuterie
1 Receba a nota da prova1
2 Receba a nota da prova2
3 Receba a nota da prova3
4 Receba a nota da prova4
5 Some todas as notas e divida
o resultado por 4
6 Mostre o resultado da divisatildeo
33 Estruturas de Dados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 02
Um aspecto fundamental na construccedilatildeo de algoritmos computacionais satildeo as estruturas de dados que representam as informaccedilotildees do problema a ser resolvido
Tais estruturas estatildeo organizadas em tipos distintos de informaccedilotildees Dentro do escopo das estruturas de dados definimos os termos CONSTANTE VARIAacuteVEL e IDENTIFICADOR Tipos Primitivos de Dados
Texto Complementar e Exerciacutecios 13
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Satildeo os grupos de informaccedilotildees que o computador manipula Podem ser 1 Numeacutericos
a) inteiros Ex 1 -4 100 0 -905 b) reais Ex 13 81697 30 -00055
1 Natildeo-numeacutericos
a) alfanumeacutericos Ex ldquoCASArdquo ldquolivrordquo ldquo18rdquo lsquoR$ 5536rsquo b) loacutegicos ou booleanos Ex Falso Verdadeiro (ou False True)
Obs O delimitador usado para alfanumeacutericos pode ser ldquo rdquo ou lsquo rsquo
Constantes
Representam valores constantes ou seja que natildeo variam no decorrer do algoritmo Ex 148 ldquoOpccedilatildeordquo -869 ldquoTecle algo para continuarrdquo Falso Variaacuteveis
Representam informaccedilotildees cujos valores satildeo modificados ao longo do tempo (Ex Geneacuterico a idade de um indiviacuteduo) Podemos definir variaacuteveis tambeacutem como um local onde um determinado valor (de um dos tipos definidos) eacute armazenado Assim a variaacutevel eacute composta de dois elementos baacutesicos
conteuacutedo - valor atual da variaacutevel identificador - nome dado agrave variaacutevel para possibilitar sua manipulaccedilatildeo
O conceito de variaacutevel na verdade corresponde a ldquoposiccedilotildees de memoacuteria RAMrdquo onde seratildeo armazenados os dados manipulados pelo programa quando este for implementado
Endereccedilo = Posiccedilatildeo na memoacuteria
Conteuacutedo = Informaccedilatildeo armazenada
Memoacuteria RAM Variaacutevel
Identificador = Nome da variaacutevel
Conteuacutedo da variaacutevel
X
Identificador
Nome de um local onde se pode colocar qualquer valor do conjunto de valores possiacuteveis de um tipo baacutesico associado Usado para manipular todos os dados variaacuteveis do algoritmo Pode tambeacutem ser usado para rotular valores constantes (ex uso do identificador PI para representar o valor constante 314) Regras para Definiccedilatildeo de Identificadores em Pseudolinguagem (Portugol)
devem comeccedilar por um caracter alfabeacutetico (uma letra) pode ser seguido de letras eou diacutegitos eacute permitido o uso do caracter especial ldquo_rdquo situado entre letras eou diacutegitos
Ex de identificadores vaacutelidos Operador Nome X y ENDERECcedilO Aluno_01
Texto Complementar e Exerciacutecios 14
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
O identificador deve representar de forma significativa o conteuacutedo desejado ou seja deve ser um MNEMOcircNICO
Procure a definiccedilatildeo de ldquomnemocircnicordquo num dicionaacuterio Depois descubra como este termo ersquo empregado em programaccedilatildeo O que satildeo variaacuteveis mnemocircnicas Declaraccedilatildeo de Variaacuteveis
Eacute a criaccedilatildeo (ou definiccedilatildeo) de locais na memoacuteria rotulados com o identificador da variaacutevel (ou constante) que seraacute utilizada no algoritmo para a manipulaccedilatildeo de um determinado tipo de informaccedilatildeo Sintaxe Geral em Portugol
Lista de Variaacuteveis Tipo O Tipo pode ser inteiro real caracter (alfanumeacuterico) ou booleano Ex NUM X inteiro parcela real resposta booleano PI real definiccedilatildeo de uma constante real NOME ENDERECcedilO caracter
Neste momento as variaacuteveis ainda natildeo conteacutem nenhum valor associado a elas
A declaraccedilatildeo de variaacuteveis deve ser feita antes da definiccedilatildeo das accedilotildees do algoritmo
Os comentaacuterios representam qualquer texto que explique uma accedilatildeo ou um dado usado no algoritmo Eles podem ser colocados em qualquer ponto do algoritmo utilizando ou como delimitadores 34 Operaccedilotildees Baacutesicas Comando de Atribuiccedilatildeo
Serve para atribuir (ou associar) um valor a uma variaacutevel ou constante Sintaxe Geral em Pseudolinguagem
identificador expressatildeo onde expressatildeo pode ser um(a) Constante Variaacutevel Expressatildeo matemaacutetica Funccedilatildeo matemaacutetica Expressatildeo booleana etc Ex NOME lsquoFulano de Talrsquo PI 314 Erro Verdadeiro (ou simplesmente Erro T) Media (P1 + P2)2
Texto Complementar e Exerciacutecios 15
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilotildees Matemaacuteticas
nome da funccedilatildeo (argumento)
O argumento eacute a informaccedilatildeo que eacute dada agrave funccedilatildeo para que ela possa ser efetuada
adequadamente Pode ser uma constante ou uma variaacutevel Exemplos de Funccedilotildees Matemaacuteticas que utilizaremos Sin (X) - Funccedilatildeo que calcula o seno da variaacutevel X SQRT (y) - Funccedilatildeo que calcula a raiz quadrada de y int (z) - Funccedilatildeo que retorna a parte inteira da variaacutevel z (que deve ser do tipo real) Operadores Aritmeacuteticos + - (unaacuterios)
exponenciaccedilatildeo multiplicaccedilatildeo divisatildeo + - soma e subtraccedilatildeo (binaacuterios) div divisatildeo truncada (ou inteira) (ex x div y) mod resto da divisatildeo inteira Operadores Relacionais lt lt= gt gt= = lt gt (diferente)
Operadores Loacutegicos not and or
Podemos usar parecircnteses para alterar ordem de prioridade das operaccedilotildees
Ver resumo dos operadores e a ordem de prioridade das operaccedilotildees em ldquoLoacutegica de Programaccedilatildeordquo ndash Forbellone Cap 02 Comandos de Entrada e Saiacuteda de Dados
Representam as accedilotildees baacutesicas de algoritmos para recebimento e apresentaccedilatildeo de dados respectivamente Entrada de Dados informaccedilotildees que satildeo fornecidas ao programa pelo ldquousuaacuteriordquo durante a resoluccedilatildeo do problema Representaccedilatildeo em Portugol
leia (identificador identificador ) Ex leia (altura idade sexo) Saiacuteda de Dados informaccedilotildees que satildeo mostradas ao usuaacuterio como resposta ao problema Representaccedilatildeo em Pseudolinguagem
Escreva (expressatildeo expressatildeo )
Texto Complementar e Exerciacutecios 16
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex escreva (lsquo Seu peso ideal eh rsquo peso_ideal) escreva (lsquo Media final = rsquo (P1 + P2)2) Esquema Geneacuterico de Algoritmos em PseudoLinguagem
Declaraccedilatildeo de Variaacuteveis Constantes INICIO inicializaccedilatildeo de variaacuteveis constantes comentaacuterios bloco de comandos de entrada de dados comentaacuterios bloco de comandos de caacutelculo comentaacuterios bloco de comandos de saiacuteda de dados FIM
Exemplo Algoritmo em pseudolingugem para o problema do caacutelculo da meacutedia final dos alunos da 6ordf Seacuterie
declaraccedilatildeo de variaacuteveis Real P1 P2 P3 P4 Media Inicio
comandos de entrada de dados Leia (p1) Leia (p2) Leia (p3) Leia (p4) processamento- Calculo da media Media (P1 + P2 + P3 + P4)4 saiacuteda de dados Escreva (lsquo Media final = rsquo Media)
Fim
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo a) entrada de dados b) saiacuteda de dados c) declaraccedilatildeo de variaacuteveis d) inicializaccedilatildeo de variaacuteveis e) atribuiccedilatildeo do resultado de uma expressatildeo aritmeacutetica a uma variaacutevel F2 Utilizando tipos primitivos de dados crie declaraccedilotildees de variaacuteveis que armazenem as seguintes informaccedilotildees o nome de uma figura geomeacutetrica a quantidade de lados a aacuterea o periacutemetro e se a figura eacute regular ou natildeo
Exerciacutecios Complementares Livro Forbellone - Cap 02 - Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 17
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
35 Estruturas de Controle Sequencial Condicional e de Repeticcedilatildeo
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 03 Estrutura de Controle Sequumlencial
Conjunto de comandos que satildeo executados numa sequumlecircncia linear de cima para baixo na mesma ordem em que aparecem Sintaxe Geral
Comando 1 Comando 2 Comando 3
Estrutura de Controle Condicional ou de Seleccedilatildeo
Permite a escolha de um grupo de accedilotildees para serem executadas de acordo com a aceitaccedilatildeo ou natildeo de certas condiccedilotildees Satildeo testados paracircmetros e a depender de seus valores tomamos um caminho ou outro As condiccedilotildees que satildeo testadas num Algoritmo satildeo do tipo loacutegica (booleana) portanto podem ter somente dois resultados Verdadeiro ou Falso Assim a seleccedilatildeo de accedilotildees pode seguir no maacuteximo duas alternativas uma se a condiccedilatildeo for verdadeira e outra se a condiccedilatildeo testada for falsa Existem seleccedilotildees mais simples e seleccedilotildees compostas outras seleccedilotildees Seleccedilotildees Simples Opccedilatildeo 1 Sintaxe Geral
Se condiccedilatildeo Entatildeo bloco de comandos 1 Fim se
Opccedilatildeo 2
Se condiccedilatildeo Entatildeo bloco de comandos 1 senatildeo bloco de comandos 2 Fim se
Texto Complementar e Exerciacutecios 18
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Seleccedilotildees Compostas Aninhamento de condiccedilotildees
Se condiccedilatildeo1 Entatildeo bloco de comandos 1 senatildeo Se condiccedilatildeo2 Entatildeo bloco de comandos 2 Fim se Fim se
Observaccedilatildeo as palavras sublinhadas na Sintaxe Geral satildeo chamadas de ldquopalavras
reservadasrdquo e sempre aparecem na estrutura As palavras em itaacutelico satildeo indicaccedilotildees do tipo de expressatildeo ou comando que devem ser usados Estrutura de Repeticcedilatildeo
Podemos ter repeticcedilotildees condicionais ( a repeticcedilatildeo ocorre condicionada a uma condiccedilatildeo loacutegica) e incondicionais (que tem um nuacutemero preacute-definido de repeticcedilotildees) a) Repeticcedilatildeo Condicional existem dois tipos distintos de Repeticcedilatildeo Condicional Tipo 1 - Condiccedilatildeo testada no iniacutecio da repeticcedilatildeo Sintaxe Geral
Enquanto condiccedilatildeo faccedila bloco de comandos Fim enquanto
Caracteriacutesticas
bull Testa a condiccedilatildeo antes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos pode ser executado 0 ou mais vezes bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar falsa
Exemplo
Elabore um algoritmo para determinar o menor nuacutemero fornecido de um conjunto de valores inteiros positivos dados Considere que o nuacutemero zero indica o encerramento do conjunto de dados de entrada
valor menor inteiro Iniacutecio leia (valor) menor valor inicializaccedilatildeo da variaacutevel que vai guardar o menor valor Enquanto ( valor lt gt 0 ) faccedila Se valor lt menor entatildeo menor valor
Texto Complementar e Exerciacutecios 19
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
fim se leia (valor) entrada do proacuteximo elemento do conjunto fim enquanto escreva (lsquo O menor valor do conjunto eacute lsquo menor) Fim
Tipo 2 - Condiccedilatildeo testada no final da repeticcedilatildeo
Repita bloco de comandos ateacute condiccedilatildeo
Caracteriacutesticas
bull Testa a condiccedilatildeo apoacutes da execuccedilatildeo do bloco bull Enquanto a condiccedilatildeo for verdadeira o bloco de comandos eacute executado Assim o bloco
de comandos eacute executado pelo menos uma vez bull Paacutera a execuccedilatildeo do bloco quando a condiccedilatildeo se tornar verdadeira (denominada de
Condiccedilatildeo de Parada) b) Repeticcedilatildeo Incondicional - Nordm preacute-definido de repeticcedilotildees Sintaxe Geral
Para variaacutevel de controle = valor inicial ateacute valor final Faccedila bloco de comandos Fim para
bull Repete o bloco de comandos (valor final - valor-inicial + 1) vezes bull Incrementa automaticamente a variaacutevel de controle cada vez que o bloco eacute
executado (incremento ldquodefaultrdquo de 1 ateacute alcanccedilar o valor final) bull Se o valor final definido for menor que o valor inicial o laccedilo de repeticcedilatildeo natildeo eacute
executado nenhuma vez bull A variaacutevel de controle deve ser do tipo primitivo inteiro bull A variaacutevel usada como controle da estrutura natildeo pode ser modificada dentro do
bloco
Texto Complementar e Exerciacutecios 20
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Elabore um algoritmo para calcular o fatorial de N onde N eacute um nuacutemero inteiro (maior ou igual a zero) Considere que Se N gt 0 entatildeo N = 1x 2 x 3 x x N
N= 0 entatildeo N = 1 Algoritmo em Pseudolinguagem n fat acum inteiro acum ersquo a variaacutevel de controle Iniacutecio leia (n) inicializaccedilatildeo de fat fat 1 Para acum = 2 ateacute n faccedila fat fat acum fim para escreva (lsquo o fatorial de rsquo n
lsquo eacute lsquo fat ) Fim
e em Fluxograma
Teste da Soluccedilatildeo Testando o algoritmo acima para os seguintes valores de n 0 1 e 3
N Fat acum Escreva 0 1 X fatorial = 1 1 1 X fatorial = 1 3 1 2 12 3 123 4 fatorial = 6
Exerciacutecios de Fixaccedilatildeo F1 Faccedila 02 exemplos para cada um dos conceitos abaixo
a) condiccedilatildeo loacutegica composta b) estrutura de seleccedilatildeo simples c) estrutura de seleccedilatildeo encadeada d) estrutura de seleccedilatildeo de muacuteltipla escolha
Texto Complementar e Exerciacutecios 21
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
F2 Observe o algoritmo e responda
X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
a) Qual o objetivo do algoritmo acima (ie qual o problema que ele estaacute solucionando) b) O algoritmo estaacute correto Como vocecirc fez para testaacute-lo c) Altere o algoritmo utilizando a Estrutura Repita Ateacute d) Altere o algoritmo utilizando a Estrutura Para Faccedila e) Qual das trecircs opccedilotildees de algoritmo eacute a melhor na sua opiniatildeo Por que
36 Consideraccedilotildees sobre o Uso de Variaacuteveis em Algoritmos Computacionais As variaacuteveis representam a informaccedilatildeo manipulada pelo algoritmo e portanto pode aparecer em diversas situaccedilotildees 1Armazenar dados que satildeo fornecidos pelo usuaacuterio
Ex leia (DIA MES ANO) 2 Armazenar resultados de expressotildees
Ex RESULT (A + B C) (D - E) 3 Acumuladores Acumular valores
Ex ACUMULA 1 Enquanto ACUMULA lt 100 faccedila leia (NUM) ACUMULA ACUMULA + NUM Fim enquanto 4 Contadores Contar valores
Ex CONTA 0 Repita CONTA CONTA + 1 escreva (ldquoRepeti o laccedilo rdquo CONTA ldquo vezes rdquo ) ateacute CONTA gt 20
5 Finalizadores Finalizar repeticcedilotildees
Texto Complementar e Exerciacutecios 22
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex1 leia (NUM) Enquanto NUM lt gt 0 faccedila condiccedilatildeo para parada raquoraquo NUM = 0 Seno SIN (NUM) escreva (Seno) leia (NUM) Fim enquanto Ex2 Repita leia (oper1 oper2) divis oper1oper2 escreva (lsquo Continuar (simnao) lsquo) leia (resp) ate resp = lsquonaorsquo condiccedilatildeo de parada
6 Sinalizadores ou Flags Sinalizar erros condiccedilotildees de falha de teste etc Variaacutevel que informa que uma determinada situaccedilatildeo foi alcanccedilada
Ex INVALIDA 0 Se (dialt1 or diagt31) or (meslt1 or mesgt12) entatildeo INVALIDA 1 senatildeo fim se Se INVALIDA = 0 entatildeo escreva (lsquo Data vaacutelida lsquo) senatildeo escreva (lsquo Data invaacutelida lsquo) fim se
Muitas vezes satildeo usadas variaacuteveis do tipo booleano como sinalizadores
Ex INVALIDA booleano Leia (dia mes ano)
inicializa a variavel booleana com um valor False ou True
INVALIDA False Se (dialt1 or diagt31) entatildeo Muda o valor do flag para sinalizar um erro ou mudanccedila de estado INVALIDA True senatildeo Se (meslt1 or mesgt12) entatildeo INVALIDA True fim se Note que a condiccedilatildeo natildeo usa operadores loacutegicos do tipo (Invalida = True) Se INVALIDA entatildeo escreva (lsquo Erro na Data - dia invalido ou mes invalido rsquo) fim se
Texto Complementar e Exerciacutecios 23
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
37 Teacutecnicas de Elaboraccedilatildeo e Verificaccedilatildeo de Algoritmos
Leitura ldquoCiecircncia dos Computadores - Uma abordagem algoriacutetmicardquo - Tremblay Cap 07 Refinamentos Sucessivos ldquotop-downrdquo
Esta eacute uma teacutecnica de elaboraccedilatildeo de algoritmos que divide o desenvolvimento do mesmo em diferentes fases O problema inicial eacute subdividido em subproblemas menores e estes em partes ainda menores e assim sucessivamente A cada divisatildeo satildeo levados em conta mais detalhes sobre a especificaccedilatildeo do problema Esta eacute uma maneira de lidar com a complexidade do problema Mais adiante quando falarmos de Procedimentos e Funccedilotildees veremos na praacutetica o uso de Refinamentos Sucessivos Top-Down Regras para tornar seu algoritmo mais claro e legiacutevel
a) Utilize comentaacuterios Escreva os comentaacuterios no momento que estiver escrevendo o algoritmo Um programa mal documentado eacute um dos piores erros que um programador pode cometer O melhor momento para se escrever os comentaacuterios eacute aquele em que o programador tem maior intimidade com o algoritmo ou seja durante a sua confecccedilatildeo Existem 02 tipos de comentaacuterios que devem ser usados Proacutelogo ou Cabeccedilalho satildeo comentaacuterios que conteacutem uma identificaccedilatildeo geral do algoritmo
bull O que faz o algoritmo (programa ou moacutedulo) bull Como chamaacute-lo ou utilizaacute-lo bull Significado dos paracircmetros variaacuteveis de entrada de saiacuteda e variaacuteveis mais
importantes bull Arquivos utilizados bull Outros moacutedulos utilizados bull Meacutetodos especiais utilizados com referecircncias nas quais possa se encontrar mais
informaccedilotildees bull Autor data de escrita e uacuteltima atualizaccedilatildeo
Comentaacuterios de linha satildeo comentaacuterios de passos que podem ser mais obscuros para o leitor como o uso de variaacuteveis como acumuladores contadores flags etc b) Utilize identificadores mnemocircnicos escolha nomes representativos para variaacuteveis funccedilotildees constantes tipos etc Evite usar letras quando a variaacutevel representa algo concreto (ex X Y + Z eacute muito menos claro que Preco Custo + Lucro) Tambeacutem evite identificadores longos (ex use nome ou nAluno ao inveacutes de nome_do_aluno para representar ldquonome de alunordquo) c) Utilize indentaccedilatildeo para mostrar a estrutura loacutegica do programa Crie suas regras baacutesicas de indentaccedilatildeo e procure seguiacute-las ao escrever um algoritmo Uma boa regra eacute indentar blocos de comandos internos a uma estrutura de controle d) Utilize espaccedilos em branco para melhorar a legibilidade Os espaccedilos em branco satildeo valiosos para melhorar a aparecircncia de um programa Vocecirc pode por exemplo
Texto Complementar e Exerciacutecios 24
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Deixar uma linha em branco entre as declaraccedilotildees e o corpo do programa bull Separar grupos de comandos que executam funccedilotildees loacutegicas distintas por uma ou mais
linhas em branco Um comando por linha eacute suficiente A utilizaccedilatildeo de vaacuterios comandos por linha eacute prejudicial por vaacuterios motivos dentre eles destacam-se o fato do programa tornar-se mais ilegiacutevel e ficar mais difiacutecil de ser depurado Testes
Um tipo de teste (denominado Teste de Mesa ou Teste Exaustivo) de um algoritmo pode ser feito atraveacutes de uma simulaccedilatildeo do mesmo aonde satildeo dados valores para os dados de entrada e vai-se preenchendo uma tabela aonde satildeo colocadas todas as variaacuteveis e constantes do algoritmo Segue-se o fluxo de execuccedilatildeo (como se estivesse executando o algoritmo em um computador imaginaacuterio) A cada comando de atribuiccedilatildeo ou caacutelculo de expressatildeo o valor das variaacuteveis deve ser atualizado Ao final do teste podemos ter as seguintes situaccedilotildees
o resultado esperado foi alcanccedilado ou foram detectados erros nos comandos ou foram detectados erros no fluxo de execuccedilatildeo - erro nas estruturas de controle
Procure fazer testes relevantes como por exemplo aqueles que verificam casos extremos e casos de exceccedilotildees Com o teste eacute possiacutevel identificar se e em que ponto o algoritmo estaacute falhando e fazer a correccedilatildeo Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo natildeo gerar nada se o computador detectar erros graves na sequumlecircncia de operaccedilotildees
Exerciacutecios de Fixaccedilatildeo Teste o algoritmo abaixo Faccedila um Teste de Mesa usando a tabela ao lado do algoritmo
lembre-se de testar os ldquocasos criacuteticosrdquo (casos extremos e casos de exceccedilotildees) X N inteiro Inicio leia (N X) Y 1 Enquanto ( X gt 0 ) faccedila inicio Y Y N X X - 1 fim Fim enquanto escreva ( Y ) Fim
N X Y ( X gt 0 )
Exerciacutecios Propostos P1 Elabore um algoritmo que verifique se um nuacutemero positivo eacute primo ou natildeo Faccedila um teste
exaustivo da soluccedilatildeo encontrada
Texto Complementar e Exerciacutecios 25
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
P2 Elabore um algoritmo que calcule os 20 primeiros termos da Seacuterie de Fibonacci A seacuterie de Fibonacci eacute formada pela seguinte sequumlecircncia 1 1 2 3 5 8 13 etc Inclua um teste de mesa do algoritmo
P3 Determine o maior e o menor valor de um conjunto de nuacutemeros inteiros positivos
Considere que o conjunto de dados de entrada termina quando eacute fornecido o nuacutemero -5 P4 Escreva um algoritmo que leia n nuacutemeros inteiros e determine se cada um deles eacute um
nuacutemero da sequumlecircncia de Fibonacci ou natildeo P5 O algoritmo abaixo tem como objetivo determinar o valor do somatoacuterio S dado pela seacuterie
S = X - X2 3 + X4 5 - X6 7 + usando os 20 primeiros termos da seacuterie poreacutem o
algoritmo natildeo estaacute correto Corrija os erros encontrados (se preciso rescreva o algoritmo)
e acrescente comentaacuterios para aumentar a legibilidade do algoritmo Faccedila um Teste de
Mesa
inteiro X F S Inicio leia ( X ) S larr 1 Fat larr 1 Para I = 1 ateacute 20 faccedila Para F = 1 ateacute ( 2 I ) faccedila Fat = Fat F Fim Para S larr ( S + (X (2 I) ) ) Fat Fim Para Escreva ( O somatoacuterio e S ) Fim
P6 Elabore um algoritmo que leia uma massa de dados contendo SEXO DATA DE
NASCIMENTO e ESTADO CIVIL (Casado Solteiro Divorciado Outros) de um grupo de 100 pessoas e determine ao final
a) Meacutedia de Idade das mulheres b) Estado Civil mais prevalente entre os entrevistados e o de menor ocorrecircncia
P7 Foi feita uma pesquisa de audiecircncia de canal de TV em vaacuterias casas numa certa cidade
num certo dia Para cada casa visitada eacute fornecido o nuacutemero do canal (4 5 7 11) e o nuacutemero de pessoas que estavam assistindo TV Elabore um algoritmo que leia um nuacutemero indeterminado de dados (terminando quando for lido um canal igual a zero) e calcule a percentagem de audiecircncia para cada emissora mostrando ao final o nuacutemero de cada canal e sua respectiva audiecircncia
No Apecircndice I encontra-se a soluccedilatildeo de alguns dos exerciacutecios propostos
Exerciacutecios Complementares
Livro do Forbellone - Cap 03 Exerciacutecios de Fixaccedilatildeo e Exerciacutecios Propostos
Texto Complementar e Exerciacutecios 26
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 27
II LOacuteGICA DE PROGRAMACcedilAtildeO COM PASCAL
Leitura
ldquoEngenharia de Softwarerdquo - Roger S Pressman Cap 16 - ldquoLinguagens de Programaccedilatildeo e Codificaccedilatildeordquo (exceto 162) ldquoIntroduccedilatildeo agrave Programaccedilatildeo com Pascalrdquo- Seacutergio E R Carvalho ldquoInformatica ndash Novas Aplicacoes com Microcomputadoresrdquo- Antonio Meirelles (pag 72 a 79) 4 As Linguagens de Programaccedilatildeo A linguagem de programaccedilatildeo eacute o meio pelo qual podemos indicar os ldquopassosrdquo que devem ser realizados pelo computador para resolver problemas Utilizando as linguagens de programaccedilatildeo colocamos algoritmos numa forma que o computador possa interpretaacute-los ou seja na forma de programas computacionais Para que o computador execute o algoritmo proposto as operaccedilotildees devem ser transcritas para uma linguagem que a maacutequina consiga compreender Na realidade os computadores soacute podem executar algoritmos expressos em linguagem de maacutequina que constitui-se de um conjunto de instruccedilotildees capazes de ativar diretamente os dispositivos eletrocircnicos do computador
Caracteriacutesticas da Linguagem de Maacutequina
bull diferente para cada tipo de computador dependendo de sua arquitetura bull extremamente rudimentar onde ateacute as operaccedilotildees mais simples tecircm que ser expressas
em termos de registros acumuladores e outros dispositivos de maacutequina bull totalmente expressa em forma numeacuterica - sistema de numeraccedilatildeo binaacuterio (0s e 1s) ou
hexadecimal Consequentemente eacute uma linguagem de difiacutecil aprendizado e pouco expressiva para as pessoas Para tornar a atividade de programaccedilatildeo mais acessiacutevel foram desenvolvidas outras linguagens denominadas de ldquoLinguagens de Programaccedilatildeordquo que funcionam como uma forma alternativa de se comunicar com o computador Como Funcionam as Linguagens de Programaccedilatildeo
As linguagens de programaccedilatildeo satildeo compostas por um grupo de elementos e regras que permitem a construccedilatildeo das instruccedilotildees utilizadas para resolver os problemas computacionais Com elas construiacutemos programas que devem ser posteriormente transformados em instruccedilotildees em Linguagem de Maacutequina Para realizar a transformaccedilatildeo cada linguagem de programaccedilatildeo possui um programa-suporte denominado genericamente de TRADUTOR
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
41 Tipos de Linguagens de Programaccedilatildeo As linguagens de programaccedilatildeo podem ser divididas em dois grupos baacutesicos
Linguagens de Programaccedilatildeo de Baixo Niacutevel Linguagens de Programaccedilatildeo de Alto Niacutevel
411 Linguagem de Programaccedilatildeo de Baixo Niacutevel Conhecida como Linguagem Assembler ou Linguagem de Montagem ou ainda Linguagem Simboacutelica Utiliza nuacutemeros binaacuterios hexadecimais alguns siacutembolos e letras para compor os programas Estaacute muito proacutexima da Linguagem de Maacutequina onde cada instruccedilatildeo simboacutelica corresponde praticamente a uma instruccedilatildeo de maacutequina Para transformar o programa escrito em Linguagem Assembler em coacutedigo de maacutequina executaacutevel eacute utilizado um programa-suporte denominado de MONTADOR 412 Linguagens de Programaccedilatildeo de Alto Niacutevel Satildeo linguagens de programaccedilatildeo que utilizam notaccedilotildees matemaacuteticas e grupos de palavras para representar as instruccedilotildees de maacutequina tornando o processo de programaccedilatildeo mais proacuteximo do entendimento humano Muitas destas linguagens foram desenvolvidas para atender os problemas de aacutereas de aplicaccedilatildeo especiacuteficas como por exemplo linguagens para aplicaccedilotildees comerciais cientiacuteficas administrativas de ensino etc A primeira linguagem de alto niacutevel foi desenvolvida em 1957 - denominada de FORTRAN (Formula Translator) - e destina-se a aplicaccedilotildees cientiacuteficas e de engenharia De acordo com seu periacuteodo de surgimento e caracteriacutesticas particulares adotadas em sua composiccedilatildeo as ling de alto niacutevel satildeo divididas em GERACcedilOtildeES (Linguagens de 2ordf Geraccedilatildeo 3ordf Geraccedilatildeo e 4ordf Geraccedilatildeo ) Vantagens das linguagens de Alto Niacutevel
bull facilidade de entendimento e uso bull independecircncia de maacutequina (eacute praticamente a mesma natildeo importando o
computador utilizado) Para transformar os programas escritos com Linguagens de Alto Niacutevel em coacutedigos de maacutequina eacute usado um programa-suporte denominado TRADUTOR (Compilador ou Interpretador) 42 Compilaccedilatildeo e Execuccedilatildeo de Programas Para executarmos um programa escrito numa linguagem de alto niacutevel eacute preciso primeiro traduzir o coacutedigo-fonte para coacutedigo-objeto O processo de traduccedilatildeo pode dar-se em tempo de execuccedilatildeo caso a linguagem use um interpretador (traduz e executa instruccedilatildeo a instruccedilatildeo) ou
Texto Complementar e Exerciacutecios 28
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
todas as instruccedilotildees podem ser traduzidas antes que se inicie a execuccedilatildeo do programa o que ocorre no caso de linguagens que usam tradutores do tipo compilador
Coacutedigo Objeto Coacutedigo Fonte Tradutor
Compilador No sentido mais geral qualquer programa que transforme um conjunto de siacutembolos em outro obedecendo a uma seacuterie de regras sintaacuteticas e semacircnticas no sentido mais comum um programa que traduz todo o coacutedigo-fonte de programas escritos numa linguagem de alto niacutevel em coacutedigo-objeto antes da execuccedilatildeo do programa O coacutedigo-objeto eacute o coacutedigo de maacutequina ou alguma variaccedilatildeo do coacutedigo de maacutequina Coacutedigo-fonte natildeo eacute executaacutevel diretamente pelo processador - permite apenas que o programador consiga definir o programa em uma forma legiacutevel aos humanos Coacutedigo-objeto eacute o coacutedigo produzido pelo compilador eacute uma forma intermediaacuteria similar a linguagem de maacutequina do computador Apesar de estar representado em binaacuterio natildeo eacute executaacutevel diretamente pelo processador pois normalmente o coacutedigo-objeto referencia partes de programa que natildeo estatildeo necessariamente definidas no mesmo arquivo que o gerou por exemplo arquivos de bibliotecas de sub-rotinas Editores de ligaccedilatildeo (ou linkeditores) Um programa que reuacutene moacutedulos compilados e arquivos de dados para criar um programa executaacutevel Os linkeditores tecircm tambeacutem outras funccedilotildees como a criaccedilatildeo de bibliotecas
Exerciacutecios de Fixaccedilatildeo F1 Faccedila um quadro comparativo para
b) Linguagem de Alto Niacutevel e Linguagem de Baixo Niacutevel
c) Programa Fonte e Programa Objeto
F2 Faccedila um diagrama que descreva o processo de compilaccedilatildeo e execuccedilatildeo de programas
indicando que ferramentas (softwares) satildeo utilizados em cada etapa e suas respectivas funccedilotildees
Pesquise sobre Linguagens de Programaccedilatildeo de Alto Niacutevel e responda
a) A que geraccedilatildeo de linguagens PASCAL pertence
b) Quais a caracteriacutesticas marcantes das linguagens de 3ordf geraccedilatildeo
c) Cite exemplos de linguagens atuais para aplicaccedilotildees comerciais e de ensino
Texto Complementar e Exerciacutecios 29
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
5 A Linguagem de Programaccedilatildeo Pascal
Leitura ldquoProgramaccedilatildeo em Pascalrdquo - Byron Gottfried Cap 2 51 Estrutura Geral dos Programas em Pascal
|-----Significado ------------------------------ estrutura do programa -------------------------------|
Cabeccedilalho PROGRAM ltidentificadorgt Bloco Declaraccedilotildees Constantes CONST ltlista de constantesgt Tipos TYPE lttipos definidos pelo usuaacuteriogt Variaacuteveis VAR ltlista de variaacuteveisgt Procedimentos PROCEDURE descriccedilatildeo do procedimento Funccedilotildees FUNCTION descriccedilatildeo da funccedilatildeo Instruccedilotildees BEGIN Bloco principal de comandos END
PROGRAM CONST etc satildeo palavras reservadas da linguagem Pascal isto eacute satildeo termos que tem um significado preacute-definido e portanto soacute devem ser usados da forma especificada na linguagem (por exemplo vocecirc natildeo poderia criar uma variaacutevel com o nome ldquovarrdquo) 52 Estrutura de Dados em Pascal A linguagem Pascal tem a capacidade de tratar muitos tipos de dados permitindo inclusive que o programador defina novos tipos a partir de tipos baacutesicos existentes (na claacuteusula TYPE) aumentando assim o nuacutemero de aplicaccedilotildees que podem ser implementadas com a linguagem
Os Tipos de Dados podem ser divididos em 1 Tipos Simples 2 Tipos Definidos pelo usuaacuterio 21 Simples 22 Estruturados 3 Tipos Estruturados 4 Tipo Apontador 521 Tipos de Dados Simples Satildeo elementos individuais associados a um identificador simples Representam locais de memoacuteria individuais ocupados por valores simples (nuacutemeros cadeia de caracter etc)
Inteiro (integer)
Texto Complementar e Exerciacutecios 30
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
A operaccedilatildeo de divisatildeo () efetuada com valores do tipo inteiro resultam em um valor do tipo REAL Natildeo existe operador exponencial
Real (real) Os operadores DIV e MOD natildeo podem ser usados com dados do tipo real
Caracter (char)
Satildeo cadeias de caracteres individuais ou seja caracteres individuais escritos entre apoacutestrofos (lsquo rsquo)
lsquo rsquo representa o caracter branco Quando queremos representar o caracter apoacutestrofo devemos escrevecirc-lo duas vezes (lsquolsquorsquorsquo) Correspondem os caracteres da Tabela ASCII Assim cada caracter corresponde a um
coacutedigo numeacuterico podendo ser comparados uns com os outros baseados em sua ordem relativa dentro do conjunto de caracteres
Booleano (boolean)
A este tipo satildeo atribuiacutedos os valores TRUE ou FALSE que representam um conjunto ordenado onde o valor falso precede o verdadeiro
Nas operaccedilotildees loacutegicas compostas devem ser utilizados parecircnteses (obrigatoriamente) para determinar a precedecircncia de realizaccedilatildeo das operaccedilotildees
522 Tipos Definidos pelo Usuaacuterio - Tipos Simples Podem ser criados a partir de um grupo de valores especiacuteficos (Subrange) ou Enumerados Os tipos estruturados satildeo definidos a partir de tipos primitivos ou tipos definidos anteriormente (tipos de tipos) Uso de claacuteusula TYPE para declaraccedilatildeo de tipos definidos pelo usuaacuterio Deve preceder a declaraccedilatildeo de variaacuteveis (ver esquema geral de programas pascal-item 51 )
Subrange (grupo de valores) Eacute um subconjunto contiacutenuo e ordenado formado a partir de um tipo original de dados simples e ordenado Isto inclui os tipos inteiros booleanos char e dados enumerados previamente definidos bull Sintaxe Geral
TYPE nome_tipo = primeiro_elemento uacuteltimo_elemento Ex1 Type maiuscula = lsquoArsquo lsquoZrsquo Var letra_m maiuscula Ex2 Type Dia = 131 Var dia_data dia mes_data 112 ano_data 9095
Enumerados
Texto Complementar e Exerciacutecios 31
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Tipos enumerados definem conjuntos ordenados de valores atraveacutes da enumeraccedilatildeo de identificadores que representam estes valores Sua ordem segue a sequecircncia na qual os identificadores satildeo enumerados bull Sintaxe Geral
TYPE nome = (identif identif identif ) Os identificadores na definiccedilatildeo do tipo tornam-se constanes do tipo enumerado A primeira constante eacute associada agrave posiccedilatildeo 0 a segunda agrave posiccedilatildeo 1 e assim por diante Os tipos enumerados satildeo uma subclasse dos tipos ordinais Ex1 type Naipe = (Ouros Espada Paus Copas) Dada esta declaraccedilatildeo Copas por exemplo eacute uma constante do tipo Naipe A funccedilatildeo do Pascal ORD retorna a posiccedilatildeo (ou ordinalidade) de uma constante do tipo enumerado Ord(Ouros) = 0 Ord(Espada) = 1 Ord(Paus) = 2 Mais adiante veremos os outros tipos de dados (Tipos Estruturados Tipo Apontador etc) 53 Estruturas de Controle
Seleccedilatildeo IF THEN ELSE
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt
ltbloco de instruccedilotildeesgt pode ser somente uma instruccedilatildeo ou um conjunto de instruccedilotildees delimitadas pelas palavras reservadas BEGIN e END que definem um bloco
IF ltexpressatildeo booleanagt THEN ltbloco de instruccedilotildeesgt ELSE ltbloco de instruccedilotildeesgt
Natildeo deve haver um terminador () antes do ELSE Caso haja mais de uma instruccedilatildeo antes do ELSE estas devem ser delimitadas por BEGIN e END (sem o apos o end)
Seleccedilatildeo CASE
Texto Complementar e Exerciacutecios 32
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
CASE ltexpressatildeogt OF Label1 ltbloco de instruccedilotildees1gt Label2 ltbloco de instruccedilotildees2gt hellip hellip ELSE ltbloco de instruccedilotildeesgt END
ltexpressatildeogt se for uma variaacutevel ela natildeo pode ser do tipo real e se for uma expressatildeo natildeo pode gerar resultado do tipo real Label deve ser um valor relacionado com o tipo da variaacutevel ou resultado da expressatildeo (nuacutemeros inteiros caracteres valores booleanos ) na estrutura CASE natildeo se coloca o begin mas eacute preciso colocar o end
Repeticcedilatildeo condicional
WHILE ltexpressatildeo booleanagt DO ltbloco de instruccedilotildeesgt
REPEAT ltinstruccedilotildeesgt UNTIL ltexpressatildeo booleanagt
Natildeo eacute preciso delimitar as instruccedilotildees da Estrutura REPEAT com as palavras reservadas BEGIN e END
Repeticcedilatildeo incondicional (nuacutemero preacute-definido de vezes)
FOR var_controle = Vi TO DOWNTO Vf DO ltbloco de instruccedilotildeesgt
Usando TO Enquanto Vi lt= Vf executa o laccedilo de repeticcedilatildeo Usando DOWNTO Enquanto Vi gt= Vf executa o laccedilo de repeticcedilatildeo ltvar_controlegt deve ser do tipo inteiro e natildeo pode ser alterada dentro do laccedilo Ex
Program ListaNumeros VAR lin col n integer Begin Readln(n) For lin = 1 to n do begin For col= lin to (n + lin ndash1) do write(col lsquo lsquo) writeln end End
Por exemplo se N = 4 O programa vai gerar a seguinte saida de dados 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
Texto Complementar e Exerciacutecios 33
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exemplo Exerciacutecio no 14 pag 63 - Cap 03 Forbellone (2a ediccedilatildeo) Program Pesquisa Uses crt indicaccedilatildeo do uso de biblioteca de funccedilotildees do Turbo Pascal que manipula o hardware video teclado etc Var declaraccedilatildeo de variaacuteveis sexoolhoscabelos char idade maioridade conta total integer perc real Begin total = 0 inicializaccedilatildeo de variaacuteveis conta = 0 maioridade = 0 clrscr limpa a tela gotoxy (53) Posiciona cursor na coluna 5 linha 3 da tela write (Pesquisa de Caracteristicas Fisicas na PopulaDaggerao ) gotoxy(105) write(digite a idade) readln(idade) While idade ltgt -1 do laccedilo de repeticcedilatildeo - Finaliza quando idade = -1 begin gotoxy(106) write(digite o sexo (FM)) readln(sexo) gotoxy(107) write(digite a cor dos olhos (AazuisVverdesCcastanhos) ) readln(olhos) olhos = upcase(olhos) gotoxy(108) write(digite a cor dos cabelos (LlouroCcastanhosPpretos) ) readln(cabelos) cabelos = upcase(cabelos) If (upcase(sexo)=F) and (olhos=V) and (cabelos=L) and (idade gt= 18) and (idade lt= 35) then conta= conta + 1 If idade gt maioridade then maioridade = idade total = total + 1 gotoxy(105) write(digite a idade) readln(idade) end perc = conta 100 total clrscr gotoxy(17) Apresentaccedilatildeo de Resultados writeln(A maior idade encontrada na populaccedilao foi de maioridade anos) writeln(Perc mulheres de 18 a 35 anos c cabelos louros e olhos verdes=perc52) End
Texto Complementar e Exerciacutecios 34
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios Propostos
Exemplo de programa sem entrada de dados
1 Faccedila um programa Pascal que calcule e escreva o nuacutemero de gratildeos de milho que se pode colocar num tabuleiro de xadrez colocando um milho no primeiro quadro e nos quadros seguintes o dobro do quadro anterior
Exemplo de programa com repeticcedilotildees (nuacutemero preacute-definido de vezes)
2 Um nuacutemero primo eacute aquele que natildeo eacute divisiacutevel por nenhum nuacutemero menor do que ele exceto a unidade Deseja-se ler N nuacutemeros e mostrar todos os divisores de cada um deles Para os primos imprimir um asterisco( ) do lado
Ex 10 rarr 1 5 10 15 rarr 1 3 5 15 11 rarr 1
Exemplo de programa com repeticcedilotildees (nuacutemero indefinido de vezes) e uso de variaacuteveis de apoio a estatiacutesticas
3 Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou natildeo de um novo produto lanccedilado Para isto forneceu o sexo do entrevistado e sua resposta (sim ou natildeo) Sabendo-se que foram entrevistadas 200 pessoas fazer um programa que calcule e mostre a) o nuacutemero de pessoas que disseram SIM
b) o nuacutemero de pessoas que disseram NAtildeO
c) a percentagem de pessoas do sexo feminino que responderam SIM
d) a percentagem de pessoas do sexo masculino que responderam NAtildeO
Exemplo de programa aplicado a matemaacutetica
4 Fazer um programa que calcule o volume e a aacuterea de uma esfera usando as foacutermulas abaixo V = 4π r3 3 A = 4π r2
Um desafio de Loacutegica 5 Satildeo fornecidos o iniacutecio e o fim de uma atividade em termos de DIA MEcircS e ANO Deseja-
se imprimir o nuacutemero de meses e dias decorridos desde o iniacutecio ateacute o final da atividade
Exerciacutecios Complementares Forbellone (2a Ediccedilatildeo) - pag 62 a 65 Exerciacutecios Propostos 1 9 13 16
Texto Complementar e Exerciacutecios 35
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
54 Tipos de Dados Estruturados
Leitura ldquoLoacutegica de Programaccedilatildeordquo - Forbellone Cap 04 Os tipos estruturados satildeo compostos por muacuteltiplos elementos relacionados entre si Cada grupo de elementos estaacute relacionado a um identificador Os elementos do grupo podem estar tambeacutem relacionados a identificadores individuais Representam vaacuterios locais de memoacuteria que guardam vaacuterios valores que podem ser acessados em conjunto ou individualmente Podem ser
String Vetores Registros Arquivos Conjuntos
String Satildeo cadeias (ou sequecircncia) de caracteres (letras diacutegitos e caracteres especiais) entre apoacutestrofos (lsquo rsquo)
Nas cadeias podem ser usadas letras maiuacutesculas e minuacutesculas O nuacutemero maacuteximo de caracteres que pode ser incluiacutedo numa cadeia varia de acordo com
a versatildeo do Pascal sendo que a maioria permite um comprimento maacuteximo de 255 caracteres
Especificaccedilatildeo do tipo String string [n ] onde n eacute a quantidade de caracteres da cadeia Cada elemento da cadeia pode ser manipulado separadamente
Ex Var cadeia string[15] Begin read(cadeia) manipulaccedilatildeo de toda a cadeia write(lsquoesta foi a informaccedilatildeo digitadarsquo cadeia) write(lsquoprimeiro elemento (ou letra) da cadeia rsquo cadeia[1] )
Exerciacutecio Proposto Pesquise as Funccedilotildees do Pascal para Manipulaccedilatildeo de Strings Explique seu objetivo tipos de paracircmetros e reultados e decirc um exemplo
Ex de funccedilotildees Length( ) Copy (string iacutendice contador)
541 Vetores (ARRAY) Definem agregados de dados homogecircneos (todos os elementos satildeo do mesmo tipo) Cada elemento ocupa uma posiccedilatildeo definida no agregado e pode ser referenciado atraveacutes dela
Texto Complementar e Exerciacutecios 36
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Declaraccedilatildeo de Vetores
ARRAY [tipo_iacutendice] OF tipo_elemento tipo_iacutendice eacute um tipo simples ordenado (inteiro caracter booleano enumerado) Eacute formado por [lils ] onde li limite inferior e ls limite superior Este tipo pode ser utilizado tanto na declaraccedilatildeo de variaacuteveis como tambeacutem na definiccedilatildeo de novos tipos (sessatildeo TYPE) Ex1 Var lista array [1100] of real o identificador do vetor eacute lista e ele poderaacute conter 100 elementos do tipo real Ex2 Type iacutendice = 1100 tipo definido pelo usuaacuterio - tipo subrange Var lista array [iacutendice] of real Ex3 Type max = 300 vetor = array[1max] of string[20] Var endereccedilo vetor a variaacutevel endereccedilo estaacute associada ao tipo vetor Ex4 Var dados array[lsquoArsquorsquoZrsquo] of integer bull Definiccedilatildeo de Vetores como Constantes (Const)
Sintaxe geral identificador_constante tipo_array = (lista de valores) Ex1 Const vetconst array [13] of integer = (0 1 2) Ex2 Type vetsemana array [17] of string [3] Const dias_semana vetsemana = (lsquoDOMrsquo lsquoSEGrsquo lsquoTERrsquo lsquoQUArsquo lsquoQUIrsquo lsquoSEXrsquo lsquoSABrsquo)
Obs Os valores das constantes array de tipo Char podem ser especificadas ou como valores caracteres simples ou como um string Ex Const diacutegito array [09] of char = (lsquo0rsquo lsquo1rsquo lsquo2rsquo lsquo3rsquo lsquo4rsquo lsquo5rsquo lsquo6rsquo lsquo7rsquo lsquo8rsquo lsquo9rsquo) ou Const diacutegito array [09] of char = lsquo0123456789rsquo
Texto Complementar e Exerciacutecios 37
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
bull Manipulaccedilatildeo de vetores nos programas Pascal
identificador_array[posiccedilatildeo_elemento] posiccedilatildeo_elemento (ou iacutendice) pode ser expresso com uma constante variaacutevel ou expressatildeo devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex lista[5] lista[i] onde i eacute uma variaacutevel inteira com valores variando de 1 a 100 lista[i+j] onde i e j satildeo variaacuteveis inteiras cuja soma natildeo ultrapassa 100 Os elementos do ARRAY podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo Program ExVetor Type VetorNotas array [140] of real Var Nota vetorNotas i integer Begin i = 1 media = 0 Repeat write (lsquoDigite a Nota rsquo) read(Nota[i]) media= media + Nota[i] i= succ(i) funccedilatildeo que incrementa a variaacutevel rArr i i + 1 until i gt 40 writeln (lsquoNotas dos Alunos rsquo) For i= 1 to 40 do writeln (Nota[i]) writeln (lsquoMedia da Turmarsquo media4052) End
Texto Complementar e Exerciacutecios 38
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Elabore um programa que leia dois vetores inteiros de 20 elementos cada depois some seus
elementos gerando um terceiro vetor Ao final mostre o novo vetor gerado 2 Considere um vetor VET com 30 elementos Verificar se existe um elemento igual a K no
vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor
3 Elabore um programa que leia um conjunto A com 50 nuacutemeros reais e construa um
conjunto B onde os elementos de ordem (posiccedilatildeo) par satildeo os elementos correspondentes de A divididos por 2 e os de ordem (posiccedilatildeo) iacutempar correspondem aos elementos de A multiplicados por 3 Ao final mostre os dois conjuntos de nuacutemeros
4 Fazer um programa Pascal que ao ser fornecida uma data no formato DDMMAA
mostre-a por extenso Ex Entrada Data 12 06 95 Saiacuteda 12 de junho de 1995 5 Defina um vetor de 100 elementos inteiros e elabore um programa que preencha
VETOR[i] com 1 se i eacute um quadrado perfeito e com 0 nos demais casos 6 Elabore um programa que utilize dois vetores V1 e V2 formados de nuacutemeros reais com 20
posiccedilotildees cada um e efetue neles as operaccedilotildees indicadas no vetor OP cujos elementos satildeo caracteres que indicam as quatro operaccedilotildees aritmeacuteticas baacutesicas (+ - ) O resultado obtido das operaccedilotildees devem ser colocados num vetor resultante VR e mostrado ao final do programa
Texto Complementar e Exerciacutecios 39
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
542 Vetores Multidimensionais (Matrizes) bull Sintaxe Geral
nome_array [dim1 dim2 dim3] of tipo_elemento Onde as dimensotildees satildeo definidas como dim1 = li1ls1 dim2 = li2ls2 dim3 = li3ls3 etc Ex1 TRIDIMENSIONAL array [110 120 140] of real define matriz
tridimensional onde a 1ordf dimensatildeo tem 10 elementos a 2ordf tem 20 elementos e a 3ordf tem 40 elementos
Ex2 BIDIMENSIONAL array [1519] of char define matriz bidimensional com 5
elementos do tipo char na 1ordf dimensatildeo e 9 na 2ordf dimensatildeo bull Manipulaccedilatildeo de matrizes nos programas Pascal
identificador_array[posiccedilatildeo_dim1 posiccedilatildeo_dim2 ] posiccedilatildeo_dim1 posiccedilatildeo_dim2 podem ser expressos com constantes variaacuteveis ou expressotildees devendo ser do tipo correto (correspondente agrave definiccedilatildeo do array) e estar dentro do intervalo preacute-definido Ex tridim[548] bidim[i9] onde i eacute uma variaacutevel inteira com valores variando de 1 a 5 Os elementos da MATRIZ podem ser usados em expressotildees instruccedilotildees de atribuiccedilatildeo instruccedilotildees read e write etc bull Programa Exemplo
Program Matrizes Var Matriz array [120 110] of integer lin col integer Begin For lin = 1 to 20 do For col = 1 to 10 do read (matriz[lincol])
Texto Complementar e Exerciacutecios 40
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Escreva um programa que leia duas matrizes bidimensionais reais MAT1 e MAT2 de
dimensotildees 3x5 cada calcule e imprima a matriz soma MSOMA
2 Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz A (dimensotildees 10x10) incluindo os elementos da proacutepria diagonal
3 Escreva um programa que leia duas matrizes reais A e B de dimensotildees 3x5 e 5x3 respectivamente calcule e imprima o produto delas
4 Dada uma matriz A de dimensotildees 5x4 formada de elementos numeacutericos reais calcule e mostre sua matriz transposta T
5 Dada uma matriz B formada por nuacutemeros inteiros com 10 linhas por 15 colunas determinar o elemento de maior valor algeacutebrico Mostre tal elemento e sua posiccedilatildeo na matriz (linha e coluna)
Texto Complementar e Exerciacutecios 41
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
55 Algoritmos de Classificaccedilatildeo e Busca Algoritmos de Classificaccedilatildeo Existem diversos meacutetodos para classificar (ou ordenar) uma estrutura de dados dentre eles temos
Meacutetodo da Bolha (Bubble Sort) Meacutetodo da Seleccedilatildeo Direta Meacutetodo Quick Sort
Exemplo Meacutetodo da Bolha na ordenaccedilatildeo de um vetor de ldquonomes de objetosrdquo Program BubbleS Uses crt Const N=5 Type letras = string[10] vet_letras= array[1N] of letras Var objetos vet_letras aux letras IJcontinteger Begin clrscr Gotoxy(222) Write(gtgtgt Exercicio - Ordenacao de Vetores com metodo da Bolhaltltlt) Gotoxy(74) write(Digite n nomes de objetos para compor o conjunto) For i=1 to N do begin gotoxy(76+i) write (Digite o elemento Objetos(i) ) readln( objetos[i] ) gotoxy(336) write( ) end Ordenaccedilatildeo do Vetor For i= 2 to N do for j= N downto i do if objetos[j] lt objetos[j-1] then begin aux = objetos[j] objetos[j] = objetos[j-1] objetos[j-1]= aux end Saida Ordenada gotoxy(715) writeln (Vetor Ordenado ) for i=1 to N do begin gotoxy(2015+i) writeln( objetos[i] )
Texto Complementar e Exerciacutecios 42
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
end End Algoritmo de Busca Sequencial Exemplo Considere um vetor A com 50 elementos Verificar se existe um elemento igual a K no vetor Se existir mostrar a posiccedilatildeo em que se encontra senatildeo imprimir natildeo encontrei K no vetor Program Procura_K Uses crt CONST Max=10 Indica o numero maximo de elementos do ARRAY NUM VAR IK integer achou boolean NUM Array [1Max] of integer Begin clrscr Gotoxy(107) Writeln(Digite Max numeros inteiros) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(NUM[i]) gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(1012) Write(Digite o numero que deseja procurar no conjunto ) read(k) achou=false i=1 While (not achou) and (ilt=Max) do if Num[i]=k then achou=true else i=i+1 gotoxy(12 16) If achou then write(Achei o numero k na posicao (i) do vetor ) else write(Nao achei o numero k no vetor ) End
Pesquise outro algoritmo de busca e faccedila um exemplo em Pascal (Ex Algoritmo de Pesquisa Binaacuteria)
Texto Complementar e Exerciacutecios 43
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 44
56 Procedimentos e Funccedilotildees
Leitura ldquoProgramaccedilatildeo em Pascalrdquo ndash B S Gottfried Cap 07 Dentre as teacutecnicas de programaccedilatildeo estruturada encontra-se a modularizaccedilatildeo Esta teacutecnica consiste em decompor um programa global em uma seacuterie de subprogramas individuais A vantagem de se usar a modularizaccedilatildeo eacute que ela permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas (ex imagine um trecho de programa que verifica se uma data eacute valida ou natildeo Este moacutedulo pode ser usado vaacuterias vezes num mesmo programa que leia varias datas diferentes e pode ser reaproveitado em novos programas que seratildeo escritos) Outras consequumlecircncias positivas do uso de modularizaccedilatildeo eacute o aumento de clareza e concisatildeo do programa pois o comprimento do programa diminui com o uso de moacutedulos Em Pascal existem dois tipo de moacutedulos de programas Procedimentos e Funccedilotildees Indicamos a leitura dos livros textos para um amplo entendimento das caracteriacutesticas dos procedimentos e funccedilotildees e diferenccedilas entre eles Abaixo encontram-se exemplos de programas que usam modularizaccedilatildeo
Exemplo1 Programa para calcular o diacutegito verificador de contas correntes Utilizaccedilatildeo de funccedilotildees definidas pelo programador 1 Funccedilotildees Principais bull Funccedilatildeo Digito(cc) recebe como entrada o nuacutemero da conta corrente e retorna seu diacutegito
verificador bull Funccedilatildeo Inverso(n tam) recebe o nuacutemero n de tamanho tam e retorna o inverso do
nuacutemero 2 Funccedilotildees Auxiliares
bull Funccedilatildeo Exponenc(np) calcula a potecircncia de um nuacutemero ( = n p) bull Funccedilatildeo Tamanho(n) determina a quantidade de algarismos de um nuacutemero
Program Conta_Corrente Var -----gt Declaraccedilatildeo de Variaacuteveis Globais cc longint Funccedilatildeo que simula a operaccedilatildeo de potenciaccedilatildeo Paracircmetros Formais valor numero que desejamos elevar a potecircncia pot potecircncia elevada FUNCTION Exponenc (valor pot integer) longint Var fator longint
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
i integer Begin if pot = 0 then Exponenc=1 usa-se o proacuteprio nome da Funccedilatildeo para assinalar o valor a ser retornado else begin fator= valor for i = 2 to pot do fator= fator valor Exponenc = fator end End Funccedilatildeo que retorna a quantidade de algarismos de um numero Paracircmetros Formais num numero desejado FUNCTION Tamanho(num longint) integer Var x string Begin str(numx) --gt Procedure do Pascal que transforma um nuacutemero numa string Tamanho = length(x) End Funccedilatildeo que retorna o inverso do numero dado Ex 34 Inverso = 43 Paracircmetros Formais n numero (de -2147483648 a 2147483647 ) tam quantidade de algarismos do numero FUNCTION Inverso (n longint tam integer) longint Var d integer inv longint Begin inv = 0 Repeat d= n mod 10 inv= inv + d Exponenc(10 tam-1) dec(tam) --gt Procedure do Pascal que decrementa um nuacutemero n= n div 10 Until tam = 0 Inverso = inv End
Texto Complementar e Exerciacutecios 45
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Funccedilatildeo que calcula o digito verificador da cc Paracircmetros Formais conta numero da cc FUNCTION Digito (conta longint) integer Var soma longint tam_soma ordem result d integer Begin soma = conta + Inverso(contaTamanho(conta)) tam_soma = Tamanho(soma) result = 0 For ordem = tam_soma downto 1 do begin d = soma mod 10 result = result + d ordem soma = soma div 10 end Digito = result mod 10 End ------------ PROGRAMA PRINCIPAL ------------ Begin write(Entre com a Conta Corrente (5 digitos) ) readln (cc) writeln writeln(O digito verificador da CC Digito(cc)) End
Texto Complementar e Exerciacutecios 46
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo
1 Quantos nuacutemeros o programa abaixo imprimiraacute na tela
Program Pares Var contador Integer Function NumeroPar(numero Integer) Boolean Begin NumeroPar = (numero mod 2) = 0 End Begin For contador = 1 To 100 Do If (NumeroPar(contador)) Then WriteLn(contador) End
2 O que o programa abaixo imprimiraacute na tela
Program Linhas Var contador Integer Procedure ImprimeLinha(linha Integer) Var contador Integer Begin For contador = 1 To linha Do Write(contador) WriteLn End Begin For contador = 1 To 10 Do ImprimeLinha(contador) End
3 O que o programa abaixo faz Quantas vezes o procedimento AcertaPosicao seraacute
executado Quantas vezes o procedimento Troca seraacute executado
Program Numeros Const LIMITE = 5 Var contador Integer numeros Array[1LIMITE] Of Integer Procedure Troca(x y Integer) Var temporario Integer Begin temporario = numeros[x] numeros[x] = numeros[y] numeros[y] = temporario End Procedure AcertaPosicao(posicao Integer) Var indice Integer Begin For indice = posicao + 1 To LIMITE Do If (numeros[indice] lt numeros[posicao]) Then
Troca(posicao indice)
Texto Complementar e Exerciacutecios 47
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
End Procedure LeNumeros Var indice Integer Begin WriteLn(Digite LIMITE numeros ) For indice = 1 To LIMITE Do ReadLn(numeros[indice]) End Procedure MostraNumeros Var indice Integer Begin Write(O resultado e ) For indice = 1 To LIMITE Do Write(numeros[indice]6) WriteLn End Begin LeNumeros For contador = 1 To 4 Do AcertaPosicao(contador) MostraNumeros End
4 Descreva uma funccedilatildeo POTENCIA que realize a operaccedilatildeo de potenciaccedilatildeo e que contenha os seguintes paracircmetros formais VALOR nuacutemero inteiro que se deseja elevar agrave potecircncia POT potecircncia elevada
Ex Na chamada da funccedilatildeo POTENCIA (5 3) o resultado seria 125 Na chamada da funccedilatildeo POTENCIA (2 0) o resultado seria 1
5 Escrever uma funccedilatildeo DIGITO (N K) que determine o valor do k-eacutesimo diacutegito da direita para a esquerda de um nuacutemero N inteiro Ex DIGITO (379836 3) = 8 DIGITO (567 8) = 0
Exerciacutecios Complementares Forbellone (2a Edicao) pag 135 136 (exerc de fixaccedilatildeo 11)
Texto Complementar e Exerciacutecios 48
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
57 Registros e Tabelas (Arrays de Registros) Registros satildeo estruturas de dados heterogecircneos isto eacute satildeo compostas de elementos de tipos diferentes Cada elemento do registro eacute denominado CAMPO Por exemplo considere um registro que contenha um grupo de informaccedilotildees sobre um funcionaacuterio de uma empresa
Pedro Silva Assistente 33 R$ 95000
Campo Nome Campo Salaacuterio Campo IdadeCampo Funccedilatildeo
Em pascal o registro eacute definido como um tipo RECORD 571 Declaraccedilatildeo de Registros em Pascal Podemos definir registros em Pascal na sessatildeo TYPE ou diretamente declarar variaacuteveis do tipo RECORD
a) Declaraccedilatildeo na sessatildeo TYPE
TYPE ltnome_novo_tipogt = RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END VAR ltidentificador_variavelgt ltnome_novo_tipogt
Ex Type Atencao para a indentacao dos campos do registro Funcionario = Record nome string[40] idade integer funcao string[30] salario real end
Var FuncionarioUFBA Funcionario
Texto Complementar e Exerciacutecios 49
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
b) Declaraccedilatildeo na sessatildeo VAR
VAR ltidentificador_registrogt RECORD campo1 tipo1 campo2 tipo2 hellip campon tipon END
Ex VAR FuncionarioUFBA Record nome string[40] idade integer funcao string[30] salario real End Os campos dos registros podem ser por sua vez de tipos simples ou estruturados (array registros etc) Ex Type estadosBrasil = (ACALAMAPBACEDFESGOMAMGMSMTPAPBPE PIPRRJRNRORRRSSCSESPTO) Var cliente record nome string[50] endereco record Rua string [30] Numero integer Complemento string [40] CEP string [10] Cidade string[20] Estado estadosBrasil end valoresUltimasCompras array [110] of real end 572 Manipulaccedilatildeo de Registros em Pascal O acesso aos campos de um registro pode ocorrer de duas formas
a) uso da notaccedilatildeo ltidentifRegistrogtltcampogt Ex
writeln (lsquoenbtre o nome do funcionariorsquo) readln(funcionarioUFBAnome) acesso ao campo nome writeln(lsquoEntre a funcaorsquo) readln(funcionarioUFBAfuncao) acesso ao campo funcao
b) uso da estrutura WITH ltidentif_Registrogt DO
Texto Complementar e Exerciacutecios 50
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Ex With funcionarioUFBA do begin writeln(lsquoDados do funcionario cadastradorsquo)
writeln (lsquoNomersquo nome) writeln (lsquoIdadersquo idade)
writeln (lsquoFuncaorsquo funcao) writeln(lsquoSalarionrsquo salario52)
end Exemplo Considere o tracho de programa abaixo O que ele faz Program Exemplo_registro Var aluno record variaacutevel aluno do tipo registro matricula string[6] definiccedilatildeo dos campos do registro nome string[15] serie integer turma char cada campo tem um nome e um tipo end Begin Write (Numero de matricula ) Readln (alunomatricula) Write (Nome ) Readln (alunonome) acesso ao campo nome do registro aluno Write (Serie ) Readln (alunoserie) Write (Turma ) Readln (alunoturma) With aluno do comando WITH indica o registro que seraacute usado -natildeo haacute necessiade de se
colocar begin e end quando temos um soacute comando na estrutura With write (O aluno nome estuda na serie a serie ) End 572 Definiccedilatildeo de Tabelas (Array de Registros) Se quisermos armazenar n informaccedilotildees referentes ao mesmo tipo de registro como por exemplo informaccedilotildees de vaacuterios funcionaacuterios ou vaacuterios alunos devemos usar uma Tabela Em Pascal a tabela eacute definida por um Array unidimensional de Registros Ex Pedro Silva Assistente 33 R$ 95000 Carlos Santos Secretario 33 R$ 73000
Meire Cardoso Diretora 33 R$ 105000
Cada linha tem um registro completo
As colunas tem informaccedilotildees do mesmo tipo
a) Declaraccedilatildeo de array de registros
Texto Complementar e Exerciacutecios 51
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
TYPE lt tipo_registrogt = RECORD campo1 tipo1 campon tipon END VAR ltidentif_tabelagt array [nm] of lt tipo_registrogt
Ex
Type aluno = record
matricula string[6] nomestring[15]
serieinteger end
Var Tab_alunos array [145] of aluno
b) Manipulaccedilatildeo de array de registros ltidentif_tabelagt[posicao]campo Ex
for i= 1 to 45 do begin
readln (aluno[i]matricula) readln (aluno[i]nome)
readln (aluno[i]serie) end Tambeacutem podemos usar a estrutura With ltidentif_tabelagt[posicao] do campo hellip Ex
for i=1 to 45 do with aluno[i] do
begin readln (matricula) readln (nome)
readln (serie) end Exemplo de programa com uso de tabelas e saiacuteda de dados impressa com uso de arquivo-texto LST
Texto Complementar e Exerciacutecios 52
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Produtos uses crt printer
Unit Printer - define arquivo texto chamado LST associado a um dispositivo LPT1
Type produto = record ident string[3] descr string[10] preco real quant integer
end Var tab_prod array [13] of produto
i integer
Begin clrscr gotoxy(103) Writeln ( CADASTRO DE PRODUTOS ) gotoxy(1 6) for i=1 to 3 do with tab_prod[i] do tab_prod[i] representa cada elemento do array begin write(identificaccedilatildeo ) readln(ident) write(descriccedilatildeo ) readln(descr) write(preco ) readln(preco) write(quantidade ) readln(quant) end writeln ( lst Produtos no Estoque ) writeln ( lst ) writeln ( lst ---Identif----Descricao----Preco----Quantidade--- ) for i=1 to 3 do with tab_prod[i] do if quant gt 0 then write(lst ident descr preco62 quant) End Saiacuteda Impressa Produtos no Estoque ---Identif----Descriccedilatildeo----Preco----Quantidade--- 111 lapis 085 320 102 regua 245 200 109 clips 130 170
Texto Complementar e Exerciacutecios 53
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Exerciacutecios de Fixaccedilatildeo 1 Uma escola possui o cadastro de seus alunos contendo o nome seacuterie turma e data de nascimento Deseja-se elaborar uma relaccedilatildeo de ldquoAniversariantes do Mecircsrdquo ao ser informado pelo usuaacuterio o nuacutemero correspondente ao mecircs desejado a seacuterie e a turma (apresentaccedilatildeo em ordem crescente pelos dias de aniversaacuterio) Modelo de Relaccedilatildeo de Aniversariantes Aniversariantes do Mecircs 04 2a Seacuterie Turma B
Nome-------------------Dia Joatildeo Santos 13
Maria Lopes 18 Andrea Aguiar 26 Marcelo Souza 29
2 Faccedila um programa Pascal que a) preencha um conjunto de registros de contas-correntes de clientes de uma agecircncia bancaacuteria
utilizando o modelo de informaccedilotildees abaixo coacutedigo cliente numeacuterico inteiro (4 posiccedilotildees) nome cliente alfanumeacuterico (30 posiccedilotildees) limite de creacutedito numeacuterico real (50000 a 300000) data abertura conta dd-mm-aa saldo atual numeacuterico real
O limite de creacutedito eacute calculado baseado no ano de abertura da conta-corrente 300000 abertura de conta entre 1986 e 1988 250000 abertura de conta entre 1989 e 1991 200000 abertura de conta entre 1992 e 1994 100000 abertura de conta em 1995 50000 abertura de conta em 1996 b) Apoacutes cadastrar todos os clientes deseja-se um relatoacuterio daqueles que estatildeo com saldo
negativo mas dentro do limite de creacutedito e os que ultrapassaram o limite permitido Deve ser mostrado o coacutedigo o nome do cliente e seu limite de creacutedito
3 Faccedila um programa em Pascal que apresente um Menu de Opccedilotildees para manipular uma
tabela de FILMES Utilize as informaccedilotildees abaixo para elaborar o programa 1 Tabela de Filmes - Deve conter informaccedilotildees sobre Nome do filme cadeia de caracteres (maacutex 20 caracteres) Tipo de Filme A (aventura) S (suspense) D (drama) 2 Menu de Opccedilotildees (1) Incluir Filme na Tabela
Texto Complementar e Exerciacutecios 54
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Nesta opccedilatildeo o usuaacuterio pode incluir 01 filme de cada vez sabendo-se que podem ser armazenados na tabela no maacuteximo 150 filmes Se o usuaacuterio tentar incluir mais de 150 filmes o programa deve apresentar a seguinte mensagem Tarefa Natildeo Concluiacuteda Sem Espaccedilo para Incluir Filme Para cada inclusatildeo deve ser verificado se o usuaacuterio forneceu a letra correta para o tipo do filme (que deve ser A S ou D)
(2) Listagem (em tela ) por Tipo de Filme O usuaacuterio deve fornecer o tipo de filme que deseja visualizar (A S ou D) e o programa deve mostrar na tela uma lista dos nomes dos filmes daquele tipo solicitado em ordem alfabeacutetica Devem ser mostrados 5 filmes de cada vez na tela (3) Fim do Programa Ao escolher esta opccedilatildeo o usuaacuterio indica que deseja encerrar o programa Antes de finalizar o programa deve mostrar o total de filmes cadastrados e a seguinte mensagem final Teacutermino do Programa OBS O usuaacuterio pode escolher as opccedilotildees (1) e (2) quantas vezes desejar e em qualquer ordem Exemplo da tela principal do programa Locadora Lk [1] Incluir Filme [2] Listar Filme por Tipo [3] Finalizar Opcao_____
Texto Complementar e Exerciacutecios 55
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 57
Apecircndice I
SOLUCcedilAtildeO DE EXERCIacuteCIOS PROPOSTOS (PAG 25 E 26)
P1
v num inteiro primo booleano Iniacutecio primo V leia (num) Se ( num = 1 ) entatildeo primo F fim se Para V=2 ateacute (num - 1) faccedila Se ( ( num mod V ) = 0 ) entatildeo primo F fim se fim para Se primo entatildeo escreva ( ldquo O numero rdquo num ldquo eacute primo rdquo ) senatildeo escreva ( ldquo O numero rdquo num ldquo natildeo eacute primo rdquo ) fim se Fim
Teste da Soluccedilatildeo Primo Num V Escreva V 1 X F natildeo eacute primo V 4 2 F 3 eacute primo P2
conta ant1 ant2 termo inteiro Iniacutecio ant1 0 ant2 1 escreva (ant2) mostra o primeiro termo conta 1 inicio um termo mostrado Enquanto conta lt 20 faccedila termo ant1 + ant2 escreva (termo) mostra o proacuteximo termo conta conta + 1 conta mais um termo mostrado ant1 ant2 ant2 termo fim enquanto Fim
Teste da Soluccedilatildeo (algoritmo para mostrar 4 termos) Ant1 Ant2 Termo Conta Conta lt 4 0 1 1 1 1 lt 4 V
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
1 1 2 2 2 lt 4 V 1 2 3 3 3 lt 4 V 2 3 5 4 4 lt 4 F Saiacuteda 1 1 2 3 P3
menor maior num inteiro Iniacutecio escreva (ldquoentre com um numero do conjunto rdquo) leia (num) menor num maior num Enquanto num lt gt -5 faccedila Se num lt menor entatildeo menor num fim se Se num gt maior entatildeo maior num fim se escreva (ldquoentre com um numero do conjunto rdquo) leia (num) fim enquanto Se menor lt gt -5 entatildeo escreva (ldquo O menor numero do conjunto eacute rdquo menor ) escreva (ldquo O maior numero do conjunto eacute rdquo maior ) senatildeo escreva (ldquo conjunto vazio rdquo ) fim se Fim
Teste da Soluccedilatildeo Num Maior Menor num lt gt -5 Num gt Maior Num lt Menor7 7 7 7 lt gt -5 V F F 4 4 lt gt -5 V F V 16 7 4 16 lt gt -5 V V F -5 16 4 -5 lt gt -5 F P4
num ant1 ant2 termo inteiro respcaracter Inicio Repita Leia (num) Ant1 0 Ant2 1 termo 0 Enquanto termo lt num faccedila termo ant1 + ant2 ant1 ant2 ant2 termo fim enquanto Se num = termo entatildeo escreva (ldquoo numerordquo num ldquoeacute termo da seacuterie de Fibonaccirdquo ) senatildeo escreva (ldquoo numerordquo num ldquonatildeo eacute termo da seacuterie de Fibonaccirdquo ) fim se escreva (ldquoDeseja informar outro numero (SN) rdquo) leia (Resp) ateacute Resp = ldquoSrdquo
Texto Complementar e Exerciacutecios 58
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Fim P6 casados solt divorc outros Tidade QtdeMulheres dn mn an da ma na anos meses dias cont maior menor inteiro sexo EstCivil prev menosprev caracter Inicio casados 0 solt 0 divorc 0 outros 0 Tidade 0 QtdeMulheres 0 Para cont = 1 ateacute 100 faccedila escreva (ldquoEntre com os dados de sexo (FM) estado civil - C p casado S p solteiro D p divorciado ou O - para outros e data de nascimento (diamesano) rdquo) leia ( sexo estcivil dn mn an) Calculo da idade em anos baseada na data de nascimento e data atual escreva (ldquo Entre com a data atual rdquo ) leia (da ma aa) data atual anos aa - an guarda a idade da pessoa em anos meses ma - mn dias da - dn Se (meses lt 0) or ( meses = 0 and dias lt 0 ) entatildeo anos anos - 1 corrige a idade de acordo com mes e dia fim se Acumuladores estatiacutesticos Se sexo = ldquoFrdquo entatildeo Tidade Tidade + anos QtdeMulheres QtdeMulheres + 1 Fim se Escolha EstCivil Caso ldquoCrdquo casados casados + 1 Caso ldquoSrdquo solt solt + 1 Caso ldquoDrdquo divorc divorc + 1 Caso ldquoOrdquo outros outros + 1 Fim escolha Fim para Escolha do estado civil mais prevalente - sem considerar empates prev ldquoCrdquo maior casados Se solt gt maior entatildeo prev ldquoSrdquo maior solt Fim se Se divorc gt maior entatildeo prev ldquoDrdquo maior divorc Fim se Se outros gt maior entatildeo prev ldquoOrdquo Fim se Escolha do estado civil menos prevalente - sem considerar empates menosprev ldquoCrdquo menor casados
Texto Complementar e Exerciacutecios 59
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Se solt lt menor entatildeo menosprev ldquoSrdquo menor solt Fim se Se divorc lt menor entatildeo menosprev ldquoDrdquo menor divorc Fim se Se outros lt menor entatildeo menosprev ldquoOrdquo Fim se Apresentaccedilatildeo dos Resultados Escreva (ldquo Meacutedia de idade das mulheres rdquo TidadeQtdeMulheres ) Escreva (ldquo Estado Civil mais prevalente rdquo prev) Escreva (ldquo Estado Civil menos prevalente rdquo memosprev) Fim P5
X F S inteiro Inicio leia X S X Para I = 1 ateacute 19 faccedila Fat 1 Para F = 2 ateacute ( 2 I + 1 ) faccedila Fat = Fat F Fim Para S ( S + ((-1) I ) ( X (2 I) ) Fat Fim Para Escreva ( O somatoacuterio eacute S ) Fim
Teste da Soluccedilatildeo S I =1 a 20 F = 2 a (2I +1) FAT S S +(-1) I X (2 I) ) Fat
X 1 2 a 3 1 2 3 X + ((-1) 1) X 2 3 2 2 a 5 1 2 3
4 5 X - X 2 3 + (-1)2 X 4 5
3 2 a 7 1 2 34 567
X - X 2 3 + X 4 5 + ((-1) 3) X 6 7
4 2 a 9 9
Texto Complementar e Exerciacutecios 60
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Apecircndice II
SIacuteMBOLOS USADOS EM FLUXOGRAMAS
Nome Idade Nome Idade
X lt- 1
Ylt- X Idadeos valores satildeo Y X
Inicio
1
I = 1 ateacute 10
A gt B
Fim
ouEntrada de Dados
Saida de Dados
Setas de Fluxo
Estrutura de Decisatildeo
Delimitadores de inicio e fim de bloco
Processamento (Caacutelculo)
Conector
V
F
Repeticcedilatildeo - nuacutemero preacute-definido de vezesa
a
Bloco de Comandos
Texto Complementar e Exerciacutecios 61
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
FLUXOGRAMAS DE ESTRUTURAS DE CONTROLE
Decisatildeo
Bloco de Comandos 1
Bloco de Comandos
Bloco de Comandos 2
Condiccedilatildeo deContinuaccedilatildeo
Condiccedilatildeo deParada
Bloco de Comandos
Estrutura de Seleccedilatildeo
V
F
a)Estrutura de Repeticcedilatildeo Condicional -Enquanto Faccedila
b) Estrutura de Repeticcedilatildeo Condicional -Repita Ateacute
F
F
V
V
Texto Complementar e Exerciacutecios 62
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Texto Complementar e Exerciacutecios 62
Apecircndice III
SOLUCcedilAtildeO DE ALGUNS PROBLEMAS PROPOSTOS EM PASCAL Exerciacutecios Propostos (na pagina 35) ndash Exercicio 02
Program primos Var Num i integer Primo boolean Begin write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num) While num ltgt 0 do begin write (num lsquo ndash 1 lsquo) primo = true for i= 2 to num do if (num mod i = 0) then begin write (i lsquo lsquo ) primo = false end
if primo then write (lsquorsquo) writeln write (lsquoentre numero que deseja investigar (0 para encerrar) lsquo) readln (num)
end end Forbellone (2a Ediccedilatildeo) Pag 62 Ex Proposto 1
PROGRAM EXTREMOS VAR NUM MENOR MAIOR INTEGER BEGIN WRITELN (Digite um conjunto de numeros inteiros positivos ) WRITE ((Para finalizar o conjunto digite -5) ) READLN (NUM) MENOR=NUM+1 MAIOR=NUM-1 WHILE NUM ltgt -5 DO BEGIN IF NUM lt MENOR THEN MENOR=NUM IF NUM gt MAIOR THEN MAIOR=NUM WRITE (Digite o proximo numero ) READLN (NUM) END WRITE (O menor numero do conjunto sbquo MENOR e o maior sbquo MAIOR) END Vetores Exercicio 3 (pag 39)
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program Vet_A_B Uses crt CONST Max = 50 Indica o numero maacuteximo de elementos do ARRAY VAR IL integer A Array [1Max] of integer B Array [1Max] of real Begin clrscr Gotoxy(223) Write(gtgtgtgt Exercicio 02 - Array ltltltlt) Gotoxy(107) Writeln(Digite numeros inteiros para formar o conjunto A de Max elementos) For i=1 to Max do begin Gotoxy(109) Write(Digite o elemento (i) ) read(A[i]) If odd(i) then B[i]= A[i] 3 else B[i]= A[i] 2 gotoxy(349) posiciona no local onde esta o numero digitado write( ) limpa o campo de digitacao do numero end Gotoxy(10 12) Writeln(gtgtgt Conjunto B formado a partir de A ltltlt) For i=1 to Max do begin gotoxy(1213+i) write(Elemento (i) B[i]61) end Gotoxy (1522) Write(Posicao Impar =gt Elemento de A multiplicado por 3 ) Gotoxy(1523) Write(Posicao Par =gt Elemento de A dividido por 2 ) Readkey Funcao da Unit CRT End Vetores Exercicio 5 (pag 39)
Program Perfeito Uses crt uso de biblioteca interna de rotinas do Turbo Pascal Unit CRT Biblioteca de rotinas que manipula caracteristicas do micro como modos de tela codigos de teclado cores e sons Exemplos de FuncoesProcedimentos Gotoxy Clrscr ReadKey CONST Max = 100 Indica o numero maximo de elementos do ARRAY VAR IL integer VET Array [1Max] of integer Begin Gotoxy(163) Write(gtgtgtgt Exercicio 01 - Array ltltltlt) Gotoxy(107) Writeln(Conjunto de Max elementos com valores 0s e 1s ) L=9 For i=1 to Max do begin If sqrt(i)=Int(sqrt(i)) then Vet[i]= 1
Texto Complementar e Exerciacutecios 63
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
else Vet[i]= 0 Gotoxy(10L) write(Posicao (i) = Vet[i]) L= L+1 end Gotoxy(12L+2) Writeln( 1 =gt posicao eh um quadrado perfeito) Gotoxy(12L+3) Writeln( 0 =gt posicao nao eh um quadrado perfeito) Readkey Funcao que aguarda ate que seja pressionada uma tecla End Multiplicaccedilatildeo de Matrizes Exercicio 03 (pag 41)
Program Multiplic uses crt Var A array[13 15] of integer
A Matriz 3 x 5 B array[15 13] of integer
B Matriz 5 x 3 C array[13 13] of integer
C Matriz 3 x 3 - Matriz Produto i j k integer Begin clrscr for i=1 to 3 do for j= 1 to 5 do begin write (digite o elemento A(ij)) readln( A[ij] ) end for i=1 to 5 do for j= 1 to 3 do begin write (digite o elemento B(ij) ) readln( B[ij] ) end for i=1 to 3 do for j=1 to 3 do begin C [ij] = 0 for k= 1 to 5 do C[ij] = C[ij]+A[iK] B[kj] end Exibindo a Matriz Produto clrscr gotoxy(53) writeln( ==== Matriz Produto ===) for i =1 to 3 do for j = 1 to 3 do writeln (Elemento (ij) = c[ij]) End Matrizes Exercicio 05 (pag 41)
Texto Complementar e Exerciacutecios 64
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Program MatMaior Determina o elemento de maior valor algeacutebrico da Matriz B 10x15 Uses crt Const MaxL=10 MaxC=15 Var Mat array [1MaxL1MaxC] of integer i j maior lin col integer Begin clrscr gotoxy(104) writeln(Digite os numeros da Matriz (MaxL x MaxC) ) For i= 1 to MaxL do for j= 1 to MaxC do begin write(Mat(ij) = ) readln(Mat[ij]) end clrscr gotoxy(104) writeln( Maior elemento da Matriz ) maior= MAT[11] For i=1 to MaxL do for j=1 to MaxC do if Mat[ij] gt maior then begin maior=Mat[ij] lin=i col=j end gotoxy(1010) writeln(Elemento Mat(lincol) = maior) readkey End
Texto Complementar e Exerciacutecios 65
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
Registros e Tabelas ndash Exercicio Relaccedilatildeo de aniversarientes (pag 53) Program Aniversario Uses CRT Const Max=2 Type cadastro= record nomestring[15] serieinteger turmachar data_nasc record dia integer mes integer ano integer end end VAR aluno array [1Max] of cadastro ix_seriex_meslininteger x_turmachar Begin clrscr writeln( Cadastro de Alunos ) for i=1 to Max do With aluno[i] do Begin write(Nome ) readln(nome) write(Serie ) readln(serie) write(Turma ) readln(turma) turma=upcase(turma) write(Data de Nascimento ) readln(data_nascdiadata_nascmesdata_nascano) end clrscr writeln( Lista de Aniversariantes do Mes ) Write(Mes desejado ) readln(x_mes) Write(Serie ) readln(x_serie) write(Turma ) readln(x_turma) x_turma=upcase(x_turma) clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln
Texto Complementar e Exerciacutecios 66
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
UFBa - Introduccedilatildeo agrave Loacutegica de Programaccedilatildeo MAT 146
lin=4 for i=1 to Max do Begin with aluno[i] do If (x_mes=data_nascmes) and (x_serie=serie) and (x_turma=turma) then begin gotoxy(3lin) writeln( nome data_nascdia) lin=lin + 1 if lin = 21 then begin gotoxy(1022) write(Tecle algo para continuar) readkey clrscr writeln(Aniversariantes do mes x_mes) writeln(Serie - x_seriea Turma - x_turma) writeln lin=4 end end end End
Texto Complementar e Exerciacutecios 67
Please purchase PDF Split-Merge on wwwverypdfcom to remove this watermark
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Janeiro de 2004
-
- O que todas essas coisas tem em comum
-
- begin
-
- Revisada em Maio de 2003
-
- O que todas essas coisas tem em comum
-
- begin
-