Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Programação de Computadores Material complementar Roberto Vichinsky Fev/2015 Introdução à Programação de Computadores __ _ 1 1. Introdução à Programação O objetivo deste capítulo é fornecer as noções básicas sobre programação de computadores. Ao final deste tópico, você saberá, teoricamente, o que é uma linguagem de programação, seus elementos básicos e como aplicar a técnica da pseudolinguagem para o desenvolvimento de programas. 1.1. Um pouquinho de história sobre a Programação de Computadores Antes de entrarmos na discussão histórica, é importante sabermos o que é um programa de computador. Façamos uma breve definição: Programa de computador é um conjunto de instruções que orientam o computador a realizar uma determinada tarefa. Este conjunto de instruções deve ser escrito em uma linguagem que o computador entenda, chamada de linguagem de programação. Assim como as linguagens naturais servem como ferramenta à comunicação entre seres humanos, as linguagens de programação servem à comunicação entre o homem e o computador. Estas linguagens permitem ao homem escrever conjuntos de instruções (programas) que possam ser executados pelo computador. Os primeiros computadores, como o ENIAC e o EDSAC, eram programados de forma bastante rudimentar. As instruções eram introduzidas no formato de cadeias de dígitos binários (este tipo de programação passou a ser chamado de “programação em linguagem de máquina”). O processo para a produção de programas em linguagem de máquina era muito trabalhoso, o que tornava a tarefa de programação muito demorada e os resultados pouco confiáveis. Procurando soluções para gerar maior produtividade na construção de programas, pesquisadores dirigiram esforços para o desenvolvimento de linguagens de maior nível, ou seja, linguagens que se assemelhassem mais às linguagens naturais e que pudessem ser traduzidas automaticamente para a linguagem de máquina e, desta forma, reconhecidas pelo computador. Chamamos de linguagens de baixo nível aquelas que são mais próximas à linguagem de máquina e, chamamos de linguagens de alto nível, aquelas mais próximas à linguagem natural. Como resultado desse esforço, surgiram as primeiras linguagens conhecidas como linguagens de montagem. Como exemplo podemos citar a linguagem TRANSCODE, desenvolvida por Pat Hume e Beatrice Worsley da Universidade de Toronto, no início da década de 1950. Em meados de 1950 surgiram as primeiras linguagens de programação orientadas para problemas, ou seja, elaboradas para uma finalidade específica. Veja abaixo a relação das principais linguagens desenvolvidas a partir de 1954: • FORTRAN (FORmula TRANslation system) – Desenvolvida para finalidades matemáticas e científicas – 1954 • ALGOL (ALGOrithmic Language) – Desenvolvida para finalidades gerais – 1958 • COBOL (COmmon Business Oriented Language) – Desenvolvida para finalidades comerciais –1959 Introdução à Programação de Computadores __ _ 2 • BASIC (Beginner’s All-purpose Symbolic Instruction Code) – Desenvolvida para aplicações gerais e orientada aos principiantes –1965 A linguagem C foi criada em 1972 por Dennis Ritchie do AT&T Bell Labs. Tinha como propósito inicial servir de ferramenta para o desenvolvimento do sistema operacional UNIX. Por ser uma linguagem flexível, veloz e altamente portável (rodava em diversos sistemas operacionais), a linguagem C tornou-se logo uma das linguagens mais utilizadas no mundo, influenciando inclusive o desenvolvimento de novas linguagens como o C++ e Java. Em resumo, as linguagens de programação, também chamadas de "linguagens simbólicas", foram criadas com o objetivo de facilitar a tarefa de programação. São mecanismos que permitem que as instruções sejam escritas em uma linguagem parecida com a linguagem natural e que podem ser entendidas pelo computador com o auxílio de ferramentas auxiliares: compiladores e interpretadores. 1.2. O processo de criação de um programa Na prática, a construção de um programa hoje em dia é uma tarefa bastante simples. Basta o programador escrever as instruções através de um editor de texto padrão, gravar o arquivo de instruções e, por meio de um software especial (compilador ou interpretador da linguagem), abrir e executar o arquivo. O arquivo texto que contém as instruções é chamado de código-fonte ou programa- fonte. O editor usado para a criação deste arquivo deve possibilitar a geração de textos puros (sem formatação). Usa-se, por exemplo, o Notepad (bloco de notas do Windows), o EDIT do MS-DOS ou qualquer outro editor similar. Porém, a maioria dos compiladores e interpretadores de linguagem fornecem um ambiente de desenvolvimento próprio, onde é possível escrever os programas diretamente sem a necessidade de editores externos, como é o caso do Inter-S e do DEV C++ que utilizaremos neste curso. 1.3. Processo de Interpretação A interpretação é o processo onde o programa-fonte é submetido a um software (interpretador) que lê e executa as linhas de instruções existentes no arquivo. Introdução à Programação de Computadores __ _ 3 1.4. Processo de Compilação A compilação é o processo onde o programa-fonte é convertido em um código executável (programa executável). 1.5. Métodos para a criação de programas Já vimos que as linguagens de programação foram criadas com o objetivo de facilitar a tarefa de programação. Assim como as linguagens naturais (português, inglês, alemão, etc.), as linguagens de programação possuem seus próprios conjuntos de palavras e regras. Um programa deve ser escrito obedecendo-se rigorosamente às regras da linguagem, pois a falta de uma vírgula, por exemplo, acarretará o não funcionamento do mesmo. Existem várias linguagens de programação (Cobol, Basic, Pascal, C, etc.), cada uma com seus próprios conjuntos de palavras e regras, porém, a maneira de se criar um programa é semelhante em todas elas: primeiramente deve ser criado um arquivo contendo as instruções desejadas (programa fonte). Esse arquivo poderá então ser interpretado ou compilado (como já visto). Este processo parece ser muito fácil, no entanto, a elaboração das instruções não é tarefa tão simples, pois exige do programador muito raciocínio lógico, tendo em vista que o computador é uma máquina e que as instruções a ele passadas devem ser rigorosamente corretas e adequadas. O simples conhecimento de uma linguagem não basta para um programador. Qualquer um pode decorar as palavras e regras de uma linguagem, assim como podemos decorar palavras da língua grega. Porém, a elaboração de uma frase em grego, ou a elaboração de uma instrução em linguagem de programação, por exemplo, requerem um raciocínio lógico apurado: uma lógica que dará sentido à frase ou à instrução. Para criarmos um programa, seja qual for a linguagem de programação utilizada, devemos primeiramente definir um algoritmo capaz de resolver o problema. Na realidade, o algoritmo é a estratégia que usamos para ordenar as idéias que serão posteriormente convertidas em instruções. #include<stdio.h> #include<conio.h> int main() { int a,b; scanf(“%d”,&a); b=a*a; printf(“%d”,b); getch(); } Programa-fonte Compilador Programa executável 01001101011101010 11011101101101101 11100010011011101 11110000111111101 11110111011111110 11010101111011111 Código-objeto LinkeditorBibliotecas 01001101011101010 11011101101101101 11100010011011101 11110000111111101 11110111011111110 11010101111011111 Introdução à Programação de Computadores __ _ 4 Um bom exemplo para ilustrarmos o conceito de "algoritmo" é uma receita culinária, onde encontramos uma relação de ingredientes e uma descrição do que deve ser feito com eles para que possamos chegar ao produto final: Ingredientes Instruções para o preparo Resultado (bolo) Uma receita culinária (exemplo de algoritmo) Um algoritmo para a resolução de um problema computacional é muito semelhante ao exemplo da receita culinária. Vamos imaginar que queremos construir um programa para calcular a média final das quatro notas bimestrais de um aluno. O diagrama para este problema seria o seguinte: Dados de entrada Procedimentos Dado de saída O problema da média final Observe que neste exemplo as 4 notas bimestrais são os "ingredientes", ou seja, os dados de entrada necessários à resolução do problema; o conjunto de instruções corresponde ao "modo de preparo", ou seja, são os procedimentos a serem realizados pelo programa e a média final corresponde ao "produto final", que no caso da receita culinária seria o bolo, e neste caso é o dado de saída. Podemos concluir que todo algoritmo requer informações externas (dados de entrada), as quais são processadas gerando resultados fornecidos como dados de saída. Existem diversos métodos para a representação de um algoritmo, porém, dentro do nosso curso usaremos apenas dois: a pseudolinguagem e o fluxograma. 1.6. O uso da pseudolinguagem como estratégia de desenvolvimento Uma boa ferramenta para a representação de algoritmos é a pseudolinguagem: uma maneira de escrever as instruções utilizando a língua portuguesa de uma forma estruturada, aproximando-a da linguagem de programação. Modo de preparo: - Junte os ovos, o leite e a farina em uma tigela. - Bata até formar... Nota 1 Nota 2 Nota 3 Nota 4 Instruções: - Obter 4 notas bimestrais - Somar e dividir por 4 - Mostrar o resultado Média Introdução à Programação de Computadores __ _ 5 Observe abaixo o algoritmo para a resolução do problema da média final, em pseudolinguagem: Rotina Declare nota1, nota2, nota3, nota4, media Numericos Receba nota1 Receba nota2 Receba nota3 Receba nota4 media = (nota1+nota2+nota3+nota4) / 4 Escreva media FimRotina Note que o algoritmo apresentado utiliza palavras em português e apresenta um certo nível de estruturação. Isto caracteriza uma pseudolinguagem. Não existe um padrão definitivo para a representação de algoritmos em pseudolinguagem, cada autor ou profissional de desenvolvimento acaba criando o seu próprio padrão, desde que obedecendo alguns princípios básicos: as instruções devem ser representadas através de verbos no imperativo; expressões matemáticas devem ser representadas da maneira mais próxima possível da matemática clássica; devem utilizar sempre a mesma palavra para representar operações iguais, etc. A pseudolinguagem não é compreendida pelo computador. Trata-se apenas de um recurso auxiliar que o programador pode utilizar para a definição da seqüência lógica do programa antes de escrevê-lo em linguagem de programação. Porém, para otimizar o estudo da lógica de programação, desenvolvemos um software capaz de interpretar e executar programas escritos em pseudolinguagem: o Inter-S. O Inter-S foi projetado para servir como ferramenta de apoio ao ensino da lógica e técnicas de programação, tornando-se uma linguagem ideal e bastante sofisticada para esta finalidade. Permite que o algoritmo seja "executado" pelo computador, possibilitando ao aluno a constatação imediata do seu funcionamento. O algoritmo apresentado como exemplo (cálculo da média) foi escrito em Inter-S. Através deste exemplo podemos esboçar algumas conclusões: • Um algoritmo Inter-S deve começar com a palavra Rotina e terminar com a palavra FimRotina, sendo que as demais linhas devem estar alinhadas em uma margem mais à direita. • Observe que algumas palavras estão em negrito. Chamadas de palavras chaves ou instruções, elas representam uma determinada ação dentro do programa. Note que algumas palavras chaves são verbos no imperativo (Declare, Receba e Escreva). • A palavra Declare faz a declaração dos dados que serão manipulados pelo programa. Estes dados (aqui chamados de variáveis) são as informações de entrada, de saída e, eventualmente, alguma informação intermediária que não é recebida nem escrita pelo programa (variáveis auxiliares). A palavra Numericos, que aparece no final da linha de declaração, indica o tipo de dado, no nosso exemplo os dados de entrada (nota1, nota2, nota3 e nota4) são numéricos, assim como o dado de saída (media). Observe que não utilizamos acentuação nem espaços para identificar os dados ou palavras chaves. Introdução à Programação de Computadores __ _ 6 • A palavra Receba instrui o recebimento de um valor, o qual será armazenado na variável indicada. A instrução Receba nota1 faz com que um dado seja "lido" (através da entrada padrão, no nosso caso o teclado do computador) e seja armazenado na variável nota1. Observe que no programa existem quatro instruções do tipo Receba, uma para cada variável de entrada (nota1, nota2, nota3 e nota4), isto significa que os quatro dados serão recebidos pelo teclado. • A expressão media = (nota1+nota2+nota3+nota4)/4 representa um cálculo, onde o sinal de igualdade (=) indica que a variável à esquerda (media) receberá o resultado. Observe que a operação de divisão é representada por uma barra (/). • A instrução Escreva media faz com que o conteúdo armazenado na variável media (o resultado do cálculo) seja escrito na saída padrão, que no nosso caso é o monitor de vídeo. 1.7. Elementos fundamentais de uma linguagem de programação No exemplo dado no tópico anterior (cálculo da média final) podemos destacar alguns elementos existentes na representação do algoritmo em Inter-S. Para que você não precise voltar à página anterior, copiamos o algoritmo logo abaixo: Rotina Declare nota1, nota2, nota3, nota4, media Numericos Receba nota1 Receba nota2 Receba nota3 Receba nota4 media = (nota1+nota2+nota3+nota4) / 4 Escreva media FimRotina Neste exemplo, percebemos a presença dos seguintes itens fundamentais: variáveis, constantes, declarações, expressões, operadores e instruções. Estes são os elementos fundamentais de qualquer linguagem de programação, os quais estudaremos a seguir. 1.7.1. Variáveis São áreas de trabalho que devemos reservar na memória do computador para o armazenamento das informações tratadas pelo programa. O termo variável vem da característica dessas áreas: o conteúdo pode variar durante a execução do programa. Toda variável deve possuir um identificador, ou seja, um nome que a identifique. Este nome é dado pelo próprio programador, obedecendo-se às seguintes regras: - Um nome de variável deve começar com uma letra; - Não pode conter espaços em branco nem caracteres especiais; - Pode conter qualquer letra do alfabeto inglês (maiúsculas e minúsculas), os dígitos de 0 a 9 (zero a nove) e o caractere underline (_); - Não pode conter letras acentuadas. Introdução à Programação de Computadores __ _ 7 É uma prática saudável atribuir um nome sugestivoa cada variável, ou seja, um nome que indique o conteúdo que a mesma receberá. Por exemplo, para "batizar" uma variável que receberá o valor de um salário poderíamos utilizar o nome VL_SALARIO, desta forma teríamos um algoritmo melhor documentado, pois o nome da variável já indicaria o seu conteúdo. No nosso exemplo (cálculo da média) utilizamos 5 variáveis: nota1 � para armazenar a nota do 1º bimestre nota2 � para armazenar a nota do 2º bimestre nota3 � para armazenar a nota do 3º bimestre nota4 � para armazenar a nota do 4º bimestre media � para armazenar o resultado do cálculo da média 1.7.2. Constantes Assim como as variáveis, constantes são áreas reservadas na memória do computador para o armazenamento de informações, porém, a característica básica de uma constante é que seu conteúdo não sofrerá alteração durante a execução do programa, ou seja, seu conteúdo será constante. Podem receber ou não um identificador. Observe no algoritmo a presença da seguinte linha: media = (nota1+nota2+nota3+nota4) / 4 Esta linha corresponde ao cálculo da média, onde os conteúdos das variáveis nota1, nota2, nota3 e nota4 serão somados e dividido pela constante 4 (/4). Observe que a constante terá sempre o valor 4, independentemente dos conteúdos atribuídos às variáveis nota1 a nota4. Neste nosso exemplo não houve a necessidade de se dar um nome à constante, ela simplesmente foi colocada na fórmula. Mas poderíamos lhe atribuir um nome, desta forma teríamos o seguinte algoritmo: Rotina Declare nota1, nota2, nota3, nota4, media Numericos Declare divisor Numerico divisor=4 Receba nota1 Receba nota2 Receba nota3 Receba nota4 media = (nota1+nota2+nota3+nota4) / divisor Escreva media FimRotina Note que foram colocadas duas linhas a mais: Declare divisor Numerico e divisor=4, a primeira linha declara uma variável numérica com nome divisor, e a segunda linha atribui o conteúdo 4 a ela. Na fórmula utilizamos o nome da constante em substituição ao seu conteúdo: media = (nota1+nota2+nota3+nota4) / divisor Introdução à Programação de Computadores __ _ 8 1.7.3. Declarações Toda variável ou constante deve ser declarada com um nome e um tipo antes de ser utilizada no algoritmo, com exceção das constantes aplicadas diretamente em uma expressão (como vimos no exemplo anterior). Temos apenas uma instrução de declaração: Declare, que é utilizada tanto para a declaração de variáveis como para a declaração de constantes. Os tipos para a declaração são Numerico e Caractere, o primeiro indica que a variável ou constante poderá armazenar apenas informações numéricas (números), e o segundo indica que a variável ou constante só poderá receber informações do tipo texto (caracteres). Veja exemplos abaixo: Declare valor, total Numericos Declara as variáveis valor e total como numéricas Declare nome Caractere Declara a variável nome como caractere (texto) 1.7.4. Expressões São combinações de variáveis, constantes e operadores em uma única sentença, que têm como finalidade a obtenção de um resultado. As expressões mais comuns são as aritméticas. Observando o nosso algoritmo para o cálculo da média, destacamos a seguinte expressão: (nota1+nota2+nota3+nota4) / 4 É uma expressão aritmética onde combinamos variáveis (nota1 a nota4), constante (4) e operadores (+ e /). A finalidade desta expressão é a obtenção da média, que posteriormente será armazenada na variável media: Veja a instrução completa: media = (nota1+nota2+nota3+nota4) / 4 , 1.7.5. Operadores São símbolos que representam as operações em uma expressão. Temos três tipos básicos de operadores: aritméticos, relacionais e lógicos. Os operadores aritméticos são aqueles utilizados em expressões numéricas. A tabela a seguir os apresenta na ordem de precedência (prioridade em que são efetuadas as operações): Operadores aritméticos Operação Operador Exponenciação ^ Multiplicação * Divisão / Adição + Subtração - Parte inteira da divisão \ ou DIV Resto da divisão (módulo) % ou MOD Introdução à Programação de Computadores __ _ 9 Os operadores relacionais permitem a comparação de 2 valores (constantes ou variáveis) de mesmo tipo: Operadores relacionais Operação Operador Igual a = Maior que > Menor que < Maior ou igual a >= Menor ou igual a <= Diferente de # Operadores lógicos são os que utilizam a lógica booleana para a construção de expressões condicionais: Operadores lógicos Operação Operador Conjunção E Disjunção OU Negação NÃO NOTA: É natural que você ainda não compreenda ou não enxergue onde e como utilizar os operadores relacionais e lógicos. Não se assuste com isso (pelo menos por enquanto!). No decorrer do curso teremos subsídios suficientes para entendê-los. Além dos três tipos básicos, temos um outro operador denominado operador de atribuição. Este operador permite atribuir valores às variáveis. Veja a instrução para o cálculo da média de nosso exemplo: media = (nota1+nota2+nota3+nota4) / 4 Observe que a variável media está recebendo o resultado de uma expressão aritmética. O operador = (sinal de igualdade) indica que a variável à esquerda é aquela que receberá o resultado do cálculo (que, neste caso, é a própria variável media). Introdução à Programação de Computadores __ _ 10 REFERÊNCIA BIBLIOGRÁFICA VICHINSKY, R.L.G. Introdução à Programação de Computadores com INTER-S. 1 ed. Rio de Janeiro: Ciência Moderna, 2012.
Compartilhar