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: [email protected])
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.
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).
Exemplos • a = b (em C)
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)
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
Compilador
ola.exe linkeditor ola.obj
Ola.asm montador
ola.c
Ciclo de Desenvolvimento de um Programa
IMPORTANTE!!!
Determinação e
entendimento do
problema: construção do
algoritmo em pseudo-
có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
Compilação
Link-edição
Depuração e
testes
Programa OK?
Fim
1
2
3
4
Não
Sim
Figura 1- Ciclo de desenvolvimento
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()
• 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);
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 ( ).
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”).
/* 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í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.
• 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 2
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 = π * r2 * h Em que:
π = 3.141547
r = raio
h = altura
Exercício 3
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 4
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 = π * r2 * h Em que:
π = 3.14,
r = raio,
h = altura.
Recommended