Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com)
Programas Programas são seqüências de instruções que descrevem as tarefas a serem realizadas para alcançar a solução de um determinado problema, e devem ser escritos em uma linguagem de programação para que possam ser executados em um computador. Portanto, um programa é um algoritmo construído segundo as regras de uma linguagem de programação.
Técnicas de Programação Na elaboração de programas é necessário utilizar um método sistemático de programação que permita a obtenção de programas confiáveis, flexíveis e eficientes. Quando existe um problema e utiliza-se um computador para resolvê-lo inevitavelmente tem-se que passar pelas seguintes etapas: Análise do problema Projeto do programa - algoritmo e estruturas de dados Implementação (codificação) e teste do programa
Definição de Linguagem de Programação Uma LP é uma linguagem destinada a ser usada por uma pessoa para expressar um processo através do qual um computador pode resolver um problema. Em outras palavras, uma LP faz a ligação entre o pensamento humano (muitas vezes de natureza não estruturada) e a precisão requerida para o processamento pela máquina.
Componentes de uma LP Computador: a máquina que executará o processo descrito através do programa; Pessoa: o programador que serve como a origem da comunicação; Processo: a atividade que está sendo descrita através do programa; Problema: o sistema atual ou ambiente onde o problema surgiu.
Especificação de uma LP A descrição de uma linguagem de programação envolve dois aspectos:
Sintaxe A sintaxe é o conjunto de regras que determina quais construções são corretas para formação dos programas e quais não são. Em outras palavras, preocupa-se com a "forma" dos programas (como expressões, comandos, declarações, etc, são colocados juntos para formar programas).
Semântica A semântica é a descrição de como as construções sintaticamente corretas são interpretadas ou executadas. Em outras palavras, preocupa-se com o "significado" dos programas (como o programa vai se comportar quando executado no computador).
a = b (em C) Exemplos comando de atribuição correto (sintaxe) substitua valor de a com o valor atual de b (semântica) a := b (em C) comando de atribuição incorreto (erro de sintaxe) a = b (em C), porém com variáveis com tipos diferentes (inteiro ou caracter) substitua valor de a com o valor atual de b (erro de semântica)
Tradução de uma LP
Interpretação Dados de Entrada Interpretador Dados de Saída Programa
Compilação Dados de Entrada Program a Fonte Compilador Program a Objeto Máquina Dados de Saída
Do programa fonte ao programa executável A geração de um programa executável a partir de um programa fonte obedece a uma seqüência de operações antes de tornar-se um executável. Depois de escrever o seu programa com o auxílio de um processador de textos no modo não documento, grava-se o programa em disco gerando assim o programa fonte (.c).
Do programa fonte ao programa executável O próximo passo é o pré-processador da linguagem, que expande o programa fonte de acordo com os comandos (os comandos do pré-processador são identificados pelo caracter # ). A seguir o arquivo expandido (extensão.c) é traduzido para o nível da linguagem assembly. É neste passo que os erros de sintaxe são notificados pelo compilador. Uma vez corrigidos os erros de sintaxe, é gerado o arquivo com extensão.asm.
Do programa fonte ao programa executável O módulo montador (assembly) traduz o arquivo com os comandos em assembly (.ASM) para gerar o módulo objeto (.OBJ) com a respectiva codificação de máquina do computador. Por fim, o módulo ligador ou linkeditor prepara o módulo objeto ligando-o com outros módulos objetos e bibliotecas para gerar o módulo executável (.EXE).
Geração do executável a partir do código fonte /* ola.c */ # include <stdio.h> main() { printf("ola!"); } Pré-processador ola.c montador Ola.asm Compilador ola.obj linkeditor ola.exe
Ciclo de Desenvolvimento de um Programa IMPORTANTE!!! Determinação e entendimento do problema: construção do algoritmo em pseudocódigo ou do fluxograma
1. Codificação Transcrição do programa em uma linguagem e usando regras que o compilador da linguagem entenda, gerando desta maneira um CÓDIGO FONTE.
2. Compilação É o processo através do qual um compilador lê o programa inteiro codificado e converte-o em um CÓDIGO OBJETO (arquivo.obj), que é uma tradução do CÓDIGO FONTE do programa em uma forma que o computador possa executar diretamente. O CÓDIGO OBJETO é também conhecido como código binário ou código de máquina.
3. Link-Edição Todo compilador C vem com uma biblioteca padrão de funções que realizam as tarefas necessárias mais comuns, como exemplo escrever no vídeo (printf()), ler um caracter do teclado (getch()), entre outras. O padrão ANSI C (American National Standards Institute) especifica o conjunto mínimo de funções que estará contido na biblioteca. No entanto seu compilador provavelmente conterá outras funções que podem não estar incluídas em um compilador de outro fabricante. O processo de link-edição é combinar o CÓDIGO OBJETO gerado pelo compilador que você escreveu, com o código objeto já encontrado na biblioteca padrão quando da chamada de uma função desta biblioteca, por exemplo printf() e getch(). O resultado deste processo é o CÓDIGO EXECUTÁVEL (arquivo.exe, no DOS).
4. Depuração e Testes Uma vez gerado o código executável passa-se para a etapa de verificação de funcionamento do programa, entrando em detalhes como valores de variáveis, fluxo dos dados, etc..., isto é na realidade o que chamamos de Depuração, e o ambiente a ser utilizado possui uma ferramenta poderosa para tal, o DEBUG. Uma vez toda que toda a parte lógica do programa está certa, parte-se para os testes. Se nesta etapa qualquer problema é encontrado, devemos iniciar todo o processo, passando novamente pelas etapas 1, 2, 3 e 4.
Início Determinação e entendimento do problema Codificação 1 Compilação 2 Link-edição 3 Depuração e testes 4 Programa OK? Não Sim Fim Figura 1- Ciclo de desenvolvimento
Linguagem C
Operador de Atribuição O operador de atribuição em linguagem C é o símbolo de igualdade = Exemplo: NUM = 3; (a variável NUM recebe o valor 3) NUM = 45 / 5; (a variável NUM recebe o resultado da operação) NUM = NUM1 + NUM2; (a variável NUM recebe o resultado da operação com os conteúdos das variáveis NUM1 e NUM2)
printf ( ) Saída de Dados
printf() printf ( oi, mundo! ); printf ( tenho %d anos de vida., idade); printf ( tenho %f metros de altura, medida); printf ( não tenho a letra %c no meu nome, letra) printf ( rua %s, nome ); printf ( a %d.a letra do alfabeto e : %c, ordem, letra);
Entrada de Dados scanf ( ) gets ( ) getchar ( ) getch ( ) getche ( )
scanf ( ) scanf( %d, &idade); scanf( %f, &altura); Obs: cuidado ao usar scanf () para leitura de string, tem que limpar o buffer de entrada antes de chamar esta função utilizando a função fflush ( ).
gets ( ) gets(nome); Obs: esta função armazena a string inteira.
getchar ( ) sexo = getchar( ); resposta = getchar( ); Obs: esta função armazena somente um único caracter.
getch ( ) getch ( ); Obs: esta função retorna imediatamente após qualquer tecla ser pressionada, mas não mostra na tela o valor dessa tecla; ela pode ser usada para não fechar a tela da execução do programa logo após o final dessa execução, ou seja, o programa fica esperando que uma tecla seja pressionada para fechar a tela de execução; tem a mesma utilização do system( pause ).
getche ( ) getche ( ); Obs: esta função retorna imediatamente após qualquer tecla ser pressionada, mostrando na tela o valor dessa tecla; ela pode ser usada para não fechar a tela da execução do programa logo após o final dessa execução, ou seja, o programa fica esperando que uma tecla seja pressionada para fechar a tela de execução; tem a mesma utilização do system( pause ).
EXEMPLOS DE PROGRAMAS COM ESTRUTURAS LÓGICAS SEQUENCIAIS
/* Cabeçalho do programa */ // Programa : Exemplo 1 // Programador : /* Declaração das Bibliotecas */ #include <stdio.h> #include <conio.h> int main ( ) // Aqui começa o programa { int X, Y; Y = 2 ; X = 10 ; X = Y + 2 ; X = ((Y + 3 ) * 4) 5 ; X = (X % 2 ) ; } printf ( O conteudo da variável X eh: %d, X); printf ( O conteudo da variável Y eh: %d, Y);
/* Cabeçalho do programa */ // Programa : Exemplo 2 // Programador : /* Declaração das Bibliotecas */ #include <stdio.h> #include <conio.h> int main ( ) // Aqui começa o programa { int ARESTA, AREA printf ( Digite o valor da aresta do quadrado: ); scanf ( %d, &ARESTA); AREA = ARESTA * ARESTA ; } printf ( A área do quadrado eh: %d, AREA);
/* Cabeçalho do programa */ // Programa : Exemplo 3 // Programador : /* Declaração das Bibliotecas */ #include <stdio.h> /*Definição das Constantes */ #define MEU_NOME João int main ( ) // Aqui começa o programa { /*Declaração das Variáveis da função principal */ int idade; float altura; char nome[30], sexo; } clrscr( ); // Limpa a tela printf( Oi! Meu nome e %s\n, MEU_NOME); printf( Qual seu nome? ); gets(nome); printf( Qual seu sexo - F (feminino) e M (masculino)? ); sexo = getchar( ); printf( Qual sua idade? ); scanf( %d, &idade); printf( Qual sua altura? ); scanf( %f, &altura); system ( pause );
Exercícios
Exercício 1 Faça um programa para ler as seguintes informações de uma pessoa: Nome, Idade, Sexo, Peso, Altura, Profissão, Rua, Bairro, Cidade, Estado, CEP, Telefone.
Exercício 2 Faça um programa para ler a base e a altura de um triângulo. Em seguida, calcule e escreva sua área. Área = ( Base * Altura ) / 2
Exercício 3 Escreva um programa que calcule o volume de um cilindro circular, dados o raio e altura desse cilíndro. Exiba o resultado desse cálculo. V = π * r 2 * h Em que: π = 3.141547 r = raio h = altura
Exercício 4 Faça um programa para ler a base e a altura de um triângulo. Em seguida, calcule e escreva sua área. Área = ( Base * Altura ) / 2
Exercício 5 Escreva um programa que calcule o volume de um cilindro circular, dados o raio e altura desse cilíndro. Exiba o resultado desse cálculo. V = π * r 2 * h Em que: π = 3.14, r = raio, h = altura.
Exercício 6 Escreva um programa que calcule a raiz de uma equação do 1.o grau, dados os valores dos coeficientes. a x + b = 0