Linguagem de
Programação Estruturada
Implementações em C/C++
Prof. M.Sc. Sérgio Augusto C. Bezerra
Instituto Federal do Amazonas
Objetivos da Aula
–
Conceituar algoritmo e conhecer suas técnicas
de representação.
–
Aprender como representar as expressões
aritméticas e lógicas através de algoritmos.
–
Desenvolver programas para representar as
expressões aritméticas e lógicas.
Introdução
Ling. de Prog. Estruturada
1. Introdução
Repensando sobre a lógica de programação
–
O que é a Lógica?
• É a ciência que estuda as leis do raciocínio.
–
Mas que leis são essas? Da Matemática, da Física,
da Geografia, etc?
• Se seguirmos os passos de tal lei estaremos
raciocinando logicamente ou conforme o estabelecido?
–
Algoritmo
é um termo derivado da Matemática:
• É um conjunto de instruções que podem ser executadas mecanicamente em um tempo finito de modo a resolver algum problema [Judith Gersting, 2001].
1. Introdução
– Algoritmo sob o ponto de vista da Informática:
• É qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Portanto, um algoritmo é uma seqüência de passos
computacionais que transformam a entrada na saída. [Cormem e outros, 2002]
– Princípio de Processamento de Dados
• Entrada Processamento Saída.
• Entrada: teclado, mouse ou scanner.
• Processamento: realizado pela UCP (ou CPU) através da execução de programas.
• Saída: monitor ou impressora. – Programas
• São algoritmos codificados através de uma linguagem de programação (C, C++, Pascal, Java, ...)
1. Introdução
Linguagens de Programação
–
Programa:
• é um conjunto de instruções que representam um algoritmo para a solução de algum problema.
• Instruções são escritas através de um conjunto de códigos (símbolos e palavras).
• Este conjunto de códigos possui regras de estruturação lógica e sintaxe própria. Dizemos que este conjunto de símbolos e regras formam um linguagem de
programação.
–
Grupos de Linguagens de Programação
• Linguagem de Baixo Nível • Linguagem de Alto Nível
1. Introdução
Linguagem de Baixo Nível
– São linguagens voltadas para a máquina, isto é, são escritas usando as instruções do microprocessador do computador.
– São genericamente chamadas de linguagens Assembly.
–
Vantagens:
• Programas são executados com maior velocidade; • E ocupam menor espaço na memória.
–
Desvantagens:
• Em geral, os programas têm pouca portabilidade;
• Os códigos Assembly não são estruturados, tornando a programação mais difícil.
1. Introdução
Linguagem de Alto Nível
– São linguagens voltadas para o ser humano.
– Em geral usam sintaxe estruturada tornando o seu código mais legível.
– Necessitam de interpretadores ou compiladores para gerar instruções do microprocessador.
– Interpretadores:
• Fazem a interpretação de cada instrução do programa fonte executando-o dentro de um ambiente de programação. • Exemplos: Basic e LISP.
– Compiladores:
• Fazem a tradução de todas as instruções do programa fonte gerando um programa executável.
• Programas executáveis (*.exe) podem ser executados fora dos ambientes de programação.
1. Introdução
Linguagem de Alto Nível
As linguagens de Alto Nível podem se distinguir quanto a sua aplicação em:
– Genéricas: C, Pascal e Basic.
– Específicas: Fortran (cálculo Matemático), GPSS
(simulação), LISP (Inteligência Artificial) e PHP (páginas para Internet)
– Vantagens
• Tem maior portabilidade • Facilidade na programação.
– Desvantagens
• As rotinas geradas (em linguagem de máquina) são mais genéricas e, portanto, mais complexas;
1. Introdução
Linguagem C
– Linguagem de alto nível e genérica.
– Foi escrita por programadores para programadores tendo como meta características de flexibilidade e portabilidade.
– O C nasceu junto com o advento da teoria de linguagem
estruturada e do computador pessoal.
– Usado para desenvolver o SO UNIX, além de muitas linguagens recentes basearem suas sintaxes no C.
– Outras características do C:
• Compartilha recursos tanto de alto quanto de baixo nível, pois permite acesso e programação direta do microprocessador. • O compilador C gera códigos mais enxutos e velozes que
muitas outras linguagens.
1. Introdução
Linguagem C (Histórico)
– 1970: Denis Ritchie desenha uma linguagem a partir do
BCPL nos labortórios da Bell Telephones, Inc, denominando-a de B.
– 1978: Brian Kerningham junta-se a Ritchie para aprimorar a
linguagem. A nova versão chama-se C, tornando-se rapidamente popular devido suas características de portabilidade e estruturação.
– ~1980: A linguagem é padronizada pela ANSI (American
National Standard Institute): surge o ANSI C.
– ~1990: A Borland International, fabricante de compiladores
profissionais escolhe o C e o Pascal como linguagens de trabalho para o seu Ambiente Integrado de
Desenvolvimento: surge o Turbo C.
– ~1992: O C se torna ponto de concordância entre teóricos do desenvolvimento da teoria de Object Oriented
1. Introdução
Criando Programas
Início
real
F, m, a;
a = 2.5;
m = 20;
F = m*a;
escreva(“Força: “ + F);
Fim
Algoritmo (Portugol ou Português Estruturado){
float
F, m, a;
a = 2.5;
m = 20;
F = m*a;
cout << “Força:” << F;
}
Programa em C/C++Descreva a finalidade de:
{ }
float
cout
<<
Agrupar as instruções em bloco.
Definir o domínio de uma variável (tipo).
Está associado à saída padrão (geralm. vídeo).
Operador de inserção, conecta a mensagem a ser
impressa à cout.
1. Introdução
Variáveis (identificadores)
–
Em geral, da Matemática sabemos que uma variável
possui um:
• nome (usado para identificação)
• domínio (para estabelecer uma faixa de valores possíveis) • valor (que pode ser atribuído conforme o seu domínio).
–
Variável em Informática
Matemática Informática
nome nome
domínio tipo de dado
– Uma variável é uma abstração de uma região de memória do computador, onde esta região pode ser identificada e manipulada por um nome que o programador dar a variável. Além disso, o espaço e o conteúdo desta região de memória, que agora será representada por uma variável, é especificado pelo programador quando ele define o tipo da variável.
1. Introdução
Formalização do nome da variável
– O nome de uma variável pode ser uma seqüência de um ou mais letras (a – z, A – Z) e/ou números (0 – 9) ou um
underscore (“_”), com o primeiro sendo obrigatoriamente
uma letra ou underscore.
– Vale ressaltar que letras minúsculas e maiúsculas são diferentes (case sensibility).
– Somente os 32 primeiros caracteres são significativos.
– Vejamos alguns exemplos de variáveis:
Válidos media _contador salBruto NOTA Situacao
Inválidos media anual sal-minimo 5toneladas cout
– Palavras reservadas da sintaxe do C++:
break case else const float
1. Introdução
Tipos de Dados
–
Tipos Básicos
Tipo Tamanho(B) Intervalo
char 1 -128 a 127
int 2 -32768 a 32767
float 4 3.4*10-38 a 3.4*10+38
double 8 1.7*10-308 a 1.7*10+308
1. Introdução
Tipos de Dados
–
Tipos Modificados
Tipo Tam.(B) Intervalo
unsigned char 1 0 a 255 unsigned 2 0 a 65535 short 2 -32768 a 32767 long 4 -2147483648 a 214748367 unsigned long 4 0 a 4294967295 long double 10 3.4*10-4932 a 1.1*10+4932
– O tipo int tem sempre o tamanho da palavra da máquina (por exemplo, em computadores de 16 bits ele terá 16 bits de
tamanho).
– No MS-DOS, o tipo short é idêntico ao tipo int, por isso, é pouco usado.
1. Introdução
Declaração de variáveis
–
Sintaxe
:tipo nome_da_var;
tipo nome_da_var1, nome_da_var2, ..., nome_da_varN;
–
Exemplos
:int idade; char letra;
float nota1, nota2, media;
Strings
– É um conjunto ordenado de caracteres que pode ser armazenado sob forma de um vetor dinâmico.
–
Exemplo
:char* nome;
nome = “Sérgio Bezerra”;
–
Sintaxe
:1. Introdução
Inicialização de variáveis
–
Sintaxe
:tipo nome_da_var1=valor1, ..., nome_da_varN=valorN;
tipo nome_da_var1= nome_da_var2= ...= nome_da_varN= valor;
–
Exemplos
:int x=10, y=5; char letra=‘A’;
float nota1=7.5, nota2=8.7, media; char* nome= “Sérgio Bezerra”;
–
Sintaxe
: (tipo)nome_da_var;–
Exemplo
: int num; float valor = 45.34; num = (int)valor;
Conversão de tipo (Casting)
As aspas simples servem para representar
um único caractere
ASCII (American
Standard Code for Information
Interchange) com um valor numérico entre 0 e
255 e as aspas duplas, para representar cadeias
1. Introdução
Constantes Simbólicas
–
Constantes definidas pelo programador
–
Sintaxe
:#define nome_da_const valor
• O #define é uma diretiva de compilação que diz ao compilador para trocar as ocorrências do texto nome_da_const pelo valor. • Observe que não há ; no final da instrução pois trata-se de um
comando para o compilador e não para o processador. • A instrução #define deve ser escrita antes da instrução de
declaração da rotina principal.
• Não é obrigatório o uso dos símbolos com letras maiúsculas, porém faz parte do jargão dos programadores C.
–
Exemplos
:#define PI 3.14159 #define ON 1
#define OFF 0
1. Introdução
Constantes Simbólicas
–
Constantes pré-definidas
• A seguir uma tabela contendo algumas constantes
simbólicas pré-definidas no compilador Turbo C++ da Borland.
• Cada uma destas constantes estão definidas em uma biblioteca.
Biblioteca Constante Valor Significado
math.h M_PI 3.14159... math.h M_PI_2 1.57079... /2 math.h M_SQRT2 1.41421... 2
conio.h BLACK 0 valor da cor preta conio.h BLUE 1 valor da cor azul conio.h GREEN 2 valor da cor verde
1. Introdução
Constantes Simbólicas
– Uma biblioteca, em C, é um arquivo pré-compilado chamado arquivo header (cabeçalho). Em cada biblioteca estão
agrupadas constantes e funções semelhantes.
– Por exemplo, constantes e funções matemáticas estão guardadas na biblioteca math.h.
– Para se beneficiar de uma biblioteca é necessário inclui-la na compilação do programa.
– Quando usamos os sinais de < e >, o arquivo é procurado
somente no diretório INCLUDE. Quando o usamos entre aspas, o arquivo é procurado primeiramente no diretório atual e
depois, se não for encontrado, no diretório INCLUDE.
–
Sintaxe
: #include <nome_da_biblioteca> #include “nome_da_biblioteca”–
Exemplos
: #include <math.h> #include <conio.h>1. Introdução
#include <iostream.h>
{
float
F, m, a;
a = 2.5;
m = 20;
F = m*a;
cout << “Força:” << F;
}
– O arquivo iostream.h contém declarações necessárias ao uso do objeto cout e do operador de inserções <<.
– Sem essas declarações, o compilador não reconhece cout e <<.
biblioteca
declarações
1. Introdução
Sequência de Escape
– Certos caracteres não-imprimíveis, como as aspas (“), o apóstrofo (‘), a interrogação (?) e a barra invertida (\), podem ser expressas como sequência de escape.
– Uma sequência de escape sempre começa com uma barra invertida e é seguida por um ou mais caracteres especiais.
– Representam sempre caracteres únicos, mesmo que sejam escritas com dois ou mais caracteres.
#include <iostream.h>
{
float
F, m, a;
a = 2.5;
m = 20;
F = m*a;
cout << “
\n
Força:” << F;
}
Caracter Seq de Escape
Campainha \a
Retrocesso (backspace) \b
Tabulação horizontal \t
Tabulação vertical \v
Nova linha \n
Cursor para o início da linha \r Salta página de formulário \f
Nulo – Zero \0
Barra invertida \\
1. Introdução
Funções
– A unidade fundamental de programas em C++ são as funções. Um programa C++ consiste em uma ou várias funções.
#include <iostream.h>
void
main( )
{
float
F, m, a;
a = 2.5;
m = 20;
F = m*a;
cout << “Força:” << F;
}
tipo
nome_da_função
( )
{
tipo var1, var2, ..., varN;
instrução1;
instrução2;
instruçãoN;
}
– O nome de uma função pode ser qualquer uma com exceção de main, reservado para a função que inicia a execução do programa. Em todo programa C++, deve existir uma única função main.
1. Introdução
Algumas Funções
Função Tipo Finalidade
abs(i) Int Retorna o valor absoluto de i
cos(d) double Retorna o cosseno de d
sin(d) double Retorna o seno de d
tan(d) double Retorna a tangente de d
fmod(d1,d2) double Retorna o resto, com o mesmo sinal de d1
pow(d1,d2) double Retorna d1 elevado à d2
log(d) double Retorna o logaritmo natural de d
sqrt(d) double Retorna a raiz quadrada de d
tolower(c) int Converte a letra para minúscula
toupper(c) int Converte a letra para maiúscula
toascii(c) int Converte o valor do argumento para ASCII clrscr() void Limpa a tela (precisa da biblioteca “conio.h”)
1. Introdução
Lendo com cin e o Operador de Extração >>
– O objeto cin (C in) manipula toda entrada do teclado por meio do operador de extração >> que conecta a entrada de dados à variável que a conterá. Usa a biblioteca iostream.h.
#include <iostream.h> #include <conio.h>
void main( ){ clrscr();
float F, m, a;
cout << “Programa da 3ª Lei de Newton”; cout << “\nDigite os valores:”;
cout << “\nMassa = “; cin >> m; cout << “\nAceleração = “; cin >> a; F = m*a; cout << “Força:” << F; }
1. Introdução
As Funções getche() e getch()
– Em algumas situações, o objeto cin não se adapta
perfeitamente, pois o usuário precisa pressionar a tecla [ENTER] toda vez que desejar terminar a leitura.
– A função getche() contorna este problema, pois ela retorna o caractere lido do teclado no instante em que ocorre a
digitação, sem esperar [ENTER].
– A função getch() é similar a getche(), exceto pelo fato de que o caractere digitado não é impresso no vídeo.
– As duas necessitam do arquivo “conio.h”.
#include <iostream.h> #include <conio.h>
void main( ){ char ch;
cout << “\nPressione uma tecla “;
ch = getche();
cout << “A tecla pressionada foi:” << ch; }
1. Introdução
Exemplo Completo do Programa
/* Programa: Terceira Lei de Newton Autor: Sérgio Bezerra */
#include <iostream.h> #include <conio.h>
void main( ){
clrscr(); //limpa a tela
float F, m, a; //declaração das variáveis
cout << “Programa da 3ª Lei de Newton”; cout << “Digite os valores:”;
cout << “\nMassa = “; cin >> m; cout << “\nAceleração = “; cin >> a; F = m*a; cout << “Força:” << F;
cout << “\n\nPressione uma tecla para sair do programa”; getch();
}
Você é capaz!!! Estou preparado e pronto para lhe ajudar!!!!
Formalize os algoritmos na sintaxe do C/C++. Pois na próxima aula, iremos continuar nos divertindo com Progr. Estruturada.
Não tem problema se você não possuir computador e/ou
compilador... Por quê? Você pode fazer tudo no caderno e digitar o código-fonte na próxima aula.