Bac004 – Informática
-Laboratório
Professora: Fabiana Costa
Guedes
BAC004-Informática-Prática-Fabiana C Guedes
IDE (Integrated Development
Environment) Code::Blocks
Baseado no Material de Walter Nagai e Cláudia
Akemi Izeki
Code::Blocks
Ambiente de Desenvolvimento Integrado (IDE)
free para a linguagem C/C++.
Multiplataforma operacional, ou seja, a mesma
versão funciona em sistemas operacionais
Linux, Mac e Windows.
Pode ser adaptado para funcionar com várias
linguagens derivadas de C/C++, mas na
disciplinas de BAC004 será utilizada a versão
do Code::Blocks que possui um compilador
C/C++ embutido similar ao gnu C++ (gcc) do
BAC004-Informática-Prática-Fabiana C Guedes
Sobre o Code::Blocks
•
IDE para vários
•
compiladores
C/C++
•
Open-source
•
Multiplataforma
•
Plug-ins
•
Importa projetos do
MS VC++ e
DevC++
•
Debugger
Download e Instalação
•
O IDE Code::Blocks está disponível no
endereço: <
http://www.codeblocks.org
>
•
No link “Downloads”, escolha a versão “binary
release”
–
Windows:
• codeblocks-12.11-setup.exe (sem
compilador)
• codeblocks-12.11mingw-setup.exe
BAC004-Informática-Prática-Fabiana C Guedes
Interface Inicial Code::Blocks
Management
Start Here
Interface Inicial Code::Blocks
Gerenciamento de projetos, símbolos declarados e recursos utilizados nos projetos Um workspace é uma abstração de área de trabalho contendo os arquivos que farão parte do projeto de sua aplicaçãoBAC004-Informática-Prática-Fabiana C Guedes
Interface Inicial Code::Blocks
Criar um novo Projeto Abre Projeto Existente Área de textos de logs, busca e depuração
BAC004-Informática-Prática-Fabiana C Guedes
BAC004-Informática-Prática-Fabiana C Guedes
BAC004-Informática-Prática-Fabiana C Guedes
Projeto Criado
Com o projeto criado, pode-se observar a pasta “Source”, onde devem ser inseridos os
Arquivos e pastas criadas
•
Na pasta/diretório que você indicou são
criadas as pastas:
–
bin: pasta onde pode ser encontrado
executável;
–
obj: pasta onde são encontrados os
arquivos-objeto da compilação de
cada arquivo .cpp
•
O arquivo contendo as especificações do
BAC004-Informática-Prática-Fabiana C Guedes
Construção e Execução
•
Tecla F9 – constrói a aplicação, compilando
todos os arquivos, e executa logo em
seguida;
•
Teclas CTRL + F9 – constrói a aplicação;
•
Teclas CTRL + F10 – executa a aplicação;
•
Teclas CTRL + F11 – reconstrói a aplicação;
•
No menu “Build” existem outras opções:
limpar pastas, limpar workspace, entre
outros.
A linguagem C
Alguns slides foram retirados
do material do professor
BAC004-Informática-Prática-Fabiana C Guedes
Palavras Chaves
•
Palavras reservadas da linguagem C++
–
catch, inline, private, template, class, new,
protected, this, delete, operator, public, virtual,
friend.
•
Todas as palavras chaves de C e C++ são
minúsculas.
•
A linguagem faz distinção entre palavras
Anatomia de um Programa
•
Todo programa em C segue uma estrutura básica,
conforme o esquema apresentado abaixo:
[inclusão de bibliotecas]
[declaração de constantes e variáveis globais]
[declaração dos protótipos de funções]
int main ( )
{
[corpo do programa principal]
}
BAC004-Informática-Prática-Fabiana C Guedes
Primeiro Programa
/* ProgC001.cpp
Anatomia de um programa C
Autor: Fabiana
Data: 08/03/2013 */
# include <iostream>
# include <cstdlib>
int main( ) {
std::cout << "UNIFEI\n";
std::cout << "Campus Itabira\n";
std::cout << "2013";
system("PAUSE > null");
return 0;
}
Comentário de mais de uma linha
Bibliotecas
Função Principal
Impressão em tela.
Fornece uma pausa no sistema, possibilitando a visualização do
resultado Retorno
Utilização do using
/* ProgC001a.cpp Utilização de using Autor: Fabiana
Data: 08/03/2013 */
# include <iostream>
# include <cstdlib>
using namespace std;
int main( ) {
cout << "UNIFEI\n";
cout << "Campus Itabira\n";
cout << "2013";
system("PAUSE > null");
Diretiva using
Não é necessário escrever std::cout
BAC004-Informática-Prática-Fabiana C Guedes
Cout – códigos especiais
•
O objeto cout não quebra a linha no final da
impressão, por isso devemos utilizar um código que é
formado pelo sinal \ (barra invertida) e outros
caracteres.
–
\n
Nova linha
–
\t
Tabulação
–
\b
Retrocesso
–
\f
Salta página
–
\a
Toca o auto-falante
(não usar nos
computadores da
faculdade, senão trava)
–
\r
Volta o cursor para o
início da linha
–
\0
Zero (Null)
–
\\
\ (barra invertida)
–
\'
Aspas simples
–
\"
Aspas duplas
–
\xdd Representação
hexadecimal de caractere da
tabela ASCII
Saída na Tela
/* ProgC001b.cpp
Outras saídas de Dados Autor: Fabiana Data: 08/03/2013 */
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main( ) {
printf("UNIFEI\n");
puts("Campus Itabira");
cout << "2013";
system("PAUSE > null");
return 0;
Comentário de mais de uma linha
Bibliotecas Função Principal Impressão em tela. Foram utilizados três comandos diferentes
Fornece uma pausa no sistema, possibilitando a visualização do
BAC004-Informática-Teórica-Fabiana C Guedes
24
Constantes, Variáveis e Tipos
de Dados
FARRER, H. et. alli.
Algoritmos Estruturados. 3a.
edição. Rio de Janeiro. LTC –
1999. Capítulo 1
Tipos de Dados
BAC004-Informática-Teórica-Fabiana C Guedes
26
Tipos de Dados
Tipo
Bits
Bytes
Escala
char
8
1
-128 a 127
int
32
4
-2.147.483.648 a 2.147.483.647
short
16
2
-32.765 a 32.767
long
32
4
-2.147.483.648 a 2.147.483.647
unsigned char
8
1
0 a 255
unsigned
32
4
0 a 4.294.967.295
unsigned long
32
4
0 a 4.294.967.295
unsigned short
16
2
0 a 65.535
float
32
4
3,4 x (10^-38) a 3,4 x (10^38)
double
64
8
1,7 x (10^-308) a 1,7 x (10^308)
long double
80
10
3,4 x (10^-4932) a 3,4 x (10^4932)
void
0
0
nenhum valor
BAC004-Informática-Prática-Fabiana C Guedes
Variáveis
•
Variáveis são posições de memória
definidas através de nomes
(identificadores) e que podem ser
modificadas pela lógica do programa,
durante sua execução.
•
Devem ser declaradas antes de serem
Variáveis – Declaração de
Variáveis
•
Forma Geral
tipo lista_de_variáveis;
•
Exemplos:
int n1, n2, i, j;
BAC004-Informática-Teórica-Fabiana C Guedes
30
Variáveis
•
As variáveis são de 3 tipos
dependendo do local em que foram
declaradas:
–
variável local;
–
variável formal – função (não será
apresentado agora);
Variáveis Locais
•
É uma variável que só existe dentro do
bloco no qual ela foi criada.
•
Um bloco (comando composto) em C
começa com { (abre chave) e termina
com } (fecha chave).
BAC004-Informática-Teórica-Fabiana C Guedes
32
Variáveis Locais
/
* ProgC002.cpp - Apresenta a declaração de variáveis locais */ # include <iostream># include <cstdlib> int main ( ){
int valor, i; valor = i = 0;
std::cout<<"Valor da variavel valor: "<<valor<<"\nValor da variavel i:"<<i<<"\n\n"; std::cout << "Forneca um novo valor inteiro para a variavel valor: ";
std::cin >> valor;
std::cout << "Forneca um novo valor inteiro para a variavel i: "; std::cin >> i;
std::cout<<"\n\nValor da variavel valor: "<<valor<<"\nValor da variavel i: "<<i<<"\n\n"; system("PAUSE");
return 0; }
Variável local declarada. Só reconhecida dentro de main.
Variáveis Globais
•
São as variáveis que estão disponíveis ao programa
inteiro, qualquer bloco do programa pode acessá-las
sem erro.
•
Estas variáveis devem ser declaradas fora de todas
as funções e no começo do programa principal.
•
O uso de variáveis globais deve ser evitado porque
estas ocupam espaço na memória durante toda a
execução do programa.
•
Deve ser explorado o uso de funções
parametrizadas para melhorar a organização e a
estruturação de programas em C.
BAC004-Informática-Teórica-Fabiana C Guedes
34
Variáveis Globais
/* ProgC003.cpp
Apresenta declaração de variáveis globais */
# include <iostream>
# include <cstdlib>
using namespace std;
char Caractere;
int main ( ){
Caractere = 'a';
cout << "Valor: " << Caractere;
system("PAUSE > null");
return 0;
}
Declaração da Variável Global Atribuição de valor a uma variávelInicialização de Variáveis
•
Para inicializar uma variável em C,
deve-se simplesmente atribuir um valor
a ela.
•
Forma Geral
BAC004-Informática-Teórica-Fabiana C Guedes
36
Inicialização de Variáveis
/* ProgC004.cpp
Apresenta formas de inicialização de variveis */
# include <iostream>
# include <cstdlib>
using namespace std;
int main ( ){
char Caractere = 'a';
int Primeiro = 0;
float Salario = 120.96;
cout << "Valor de Caractere: " << Caractere;
cout << "\nValor de Primeiro: " << Primeiro;
cout << "\nValor de Salario: " << Salario;
system("PAUSE > null");
return 0;
}
Declaração e inicialização de variável
Inicialização de variável
//ProgC005.cpp Cria duas variáveis do tipo int #include <iostream> #include <cstdlib> using namespace std; int main() { int num1; num1 = 44; int num2; num2 = num1 + 20;
cout << "\no primeiro numero e " << num1;
cout << "\no segundo numero e \"num1 + 20 \" = "<< num2 << endl; system("PAUSE");
return 0;
Declaração de variável
Declaração de constantes
•
A palavra-chave const é utilizada para
declarar constantes no programa em
linguagem C/C++.
•
Ela assegura que a variável associada
não deve ser alterada em todo o
programa.
BAC004-Informática-Teórica-Fabiana C Guedes
Declaração de constante
// ProgC006.cpp - Declaracao de Constantes #include<iostream>
using namespace std; int main() {
const float pi=3.141592; float raio, area, comp;
cout << "Calculo da area de um circulo e do perimetro de sua circunferencia." << endl; cout << "Por favor, entre com o raio: ";
cin >> raio;
area = pi * raio * raio; comp = 2 * pi * raio;
cout << "A area do circulo e: " << area << endl;
cout << "O comprimento de sua circunferencia e: " << comp << endl; return 0;
}
Declaração de constante
Uso de constante
Finaliza a saída de dados, mudando de linha
BAC004-Informática-Teórica-Fabiana C Guedes
Entrada e Saída pelo Console
•
Existe uma série de funções de entrada e saída
nas bibliotecas da linguagem C.
•
O enfoque das operações de entrada e saída é
único, diferente de todas as linguagens de
programação. Temos em C funções para:
–
Ler e escrever caracteres – getchar( ) e putchar( )
–
Ler e escrever strings – gets( ) e puts( )
–
Entrada/Saída formatada – scanf( ) e printf( )
•
Em C++ temos cout << como comando de saída, e
BAC004-Informática-Prática-Fabiana C Guedes
Lendo e Escrevendo
Caracteres
/* ProgC007.cpp
Programa que lê caracteres e escreve em caixa invertida. Lê maiúscula, escreve minúscula e vice-versa. */
# include <iostream> # include <stdio.h> int main ( ){
char Caractere;
puts ("\nDigite '.' e <ENTER> para terminar"); do {
Caractere = getchar( ); if (islower (Caractere))
Caractere = toupper (Caractere); else
Caractere = tolower (Caractere); putchar (Caractere);
} while (Caractere != '.'); }
Escreve na tela
Recupera caracteres digitados
Verifica se caractere minúsculo
Torna os caracteres maiúsculos Torna os caracteres minúsculos Repetição,
enquanto diferente do “.”
Lendo e Escrevendo Strings
/* ProgC008.cpp
Programa que le um nome e escreve uma mensagem com o nome
digitado */
# include <iostream>
# include <stdio.h>
# include <cstdlib>
int main ( ){
char Nome [20];
puts ("\nEscreva seu nome:");
gets (Nome);
puts ("Prezado Senhor(a),");
puts (Nome);
system("PAUSE > null");
String de tamanho 20 Escreve na tela Recupera os dados digitados Apresenta os dados digitadosBAC004-Informática-Prática-Fabiana C Guedes
Entrada e Saída Formatada
•
A função printf ("série de controle",
lista_de_argumentos) é responsável pela
saída formatada de dados na tela, onde:
–
"série de controle": é uma série de caracteres e
comandos de formatação de dados que devem
ser impressos.
–
lista_de_argumentos: variáveis e constantes
que serão trocados pelos formatos
Entrada e Saída Formatada
/* ProgC009.cpp
Programa que demonstra saidas formatadas */
#include <iostream>
#include <stdio.h>
#include <cstdlib>
int main ( ){
printf ("\n----+----+");
printf ("\n%-5.2f", 123.234);
printf ("\n%5.2f", 3.234);
printf ("\n%10s", "hello");
printf ("\n%-10s", "hello");
printf ("\n%5.7s", "1234567890");
system("PAUSE > null");
“\n” Nova linha “%-5.2f” ponto flutuante (f) apresentado com 5 caracteres, 2 dígitos para a parte fracionária e justificado a esquerda. “%5.2f” ponto flutuante (f) apresentado com 5 caracteres, 2 dígitos para a parte fracionária e justificado a direita.
“%10s” string (s) apresentado em 10 espaços, justificado a direita.
“%-10s” string (s) apresentado em 10 espaços, justificado a esquerda.
BAC004-Informática-Prática-Fabiana C Guedes
Entrada e Saída Formatada
• Outros códigos de controle para a função
printf:
Entrada e Saída Formatada
/* ProgC010.cpp
Programa que apresenta a Tabela de Quadrado e Cubo */
#include <iostream>
#include <stdio.h>
int main ( ){
int Numero;
printf ("\n\n %8s %8s %8s", "x", "x^2", "x^3");
for (Numero = 1; Numero <= 10; Numero++)
printf("\n %8d %8d %8d", Numero, Numero*Numero,
Numero*Numero*Numero);
return 0;
}
“%8s” string (s) apresentado em 8 espaços, justificado a direita.
BAC004-Informática-Prática-Fabiana C Guedes
Entrada e Saída Formatada
•
A função scanf("série de controle",
lista_de_endereço_dos_argumentos)
é responsável pela leitura (entrada)
formatada de dados na tela.
•
OBS: Os formatos usados na série de
controle da função scanf são
semelhantes aos formatos usados na
função printf.
Entrada e Saída Formatada
/* ProgC011.cpp
Programa que demonstra a entrada formatada de dados */
#include <iostream>
#include <stdio.h>
int main ( ){
char Nome [20];
int Idade;
printf ("\nQual e o seu nome: ");
scanf ("%s", Nome);
printf ("Quantos anos voce tem : ");
scanf ("%d", &Idade);
printf ("%s, voce tem %d anos", Nome, Idade);
return 0;
“%s” lê o string (s) sem espaços.
BAC004-Informática-Prática-Fabiana C Guedes
Criando namespaces
// ProgC012.cpp - Definição de Namespace #include <iostream> #include <cstdlib> using namespace std; namespace Silva { int a, b; } namespace Neves { double a; double b; } int main(){ Silva::a = 4; Silva::b = 7;
Neves::a = 5.453; Neves::b = 2.13e4; cout << "Silva::a = " << Silva::a << endl; cout << "Silva::b = " << Silva::b << endl; cout << "Neves::a = " << Neves::a << endl; cout << "Neves::b = " << Neves::b << endl;
Definição de namespace.
Deve ser feita fora de funções.
Na utilização da variável deve deixar claro de qual namespace faz parte.
BAC004-Informática-Prática-Fabiana C Guedes
Manipuladores de tamanho de
campo na impressão
•
O objeto cout permite estabelecer o
tamanho de um campo para impressão
•
Em geral isso é usado para
alinhamento e estética de um relatório
•
Os manipuladores de tamanho de
campo estão definidos no arquivo
iomanip
Manipuladores de tamanho de
campo na impressão
•
setw
–
Seleciona o tamanho do próximo campo a ser impresso
•
setprecision
–
Define o número de casas decimais a ser impressas para
um número em ponto flutuante
•
setfill
–
Seleciona o caractere que deverá preencher as colunas em
branco iniciais de um campo
•
setiosflags
–
Seleciona o modo de apresentação de um número (com
ponto decimal, notação científica, etc.)
BAC004-Informática-Prática-Fabiana C Guedes
Tamanho de campos com
números inteiros
//ProgC013.cpp - Sem tamanho de campo, sem manipuladores
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int lapis=45, borrachas=2345, canetas=420, cadernos=8;
cout <<"\n\n\n";
cout <<'\n'<<"Lapis "<< lapis;
cout <<'\n'<<"Borrachas "<< borrachas;
cout <<'\n'<<"Canetas "<< canetas;
cout <<'\n'<<"Cadernos "<< cadernos;
cout << endl; system("PAUSE"); return 0;
}
Tamanho de campos com
números inteiros
//ProgC013.cpp - Com tamanho de campo e com manipulador setw #include <iostream>
#include <cstdlib> #include <iomanip> using namespace std; int main(){
int lapis=45, borrachas=2345, canetas=420, cadernos=8; cout <<"\n\n\n";
cout <<'\n'<<"Lapis "<< setw(12) << lapis;
cout <<'\n'<<"Borrachas "<< setw(12) << borrachas; cout <<'\n'<<"Canetas "<< setw(12) << canetas; cout <<'\n'<<"Cadernos "<< setw(12) << cadernos; cout << endl; system("PAUSE"); return 0;
Uso de setw – permitindo deixar saída formatada Biblioteca para manipulação de
BAC004-Informática-Prática-Fabiana C Guedes
Tamanho de campos com
pontos flutuantes
//ProgC013b - Com tamanho de campo
//Com manipuladores setw, setiosflags e setprecision #include <iostream>
#include <cstdlib>
#include <iomanip> //para o uso de manipuladores using namespace std;
int main() {
float lapis=4.875, borrachas=23.542, canetas=42.036, cadernos=8.0; cout <<"\n\n\n";
cout << setiosflags(ios::fixed) << setiosflags(ios::showpoint) << setprecision(2); cout <<'\n'<<"Lapis "<< setw(12) << lapis;
cout <<'\n'<<"Borrachas "<< setw(12) << borrachas; cout <<'\n'<<"Canetas "<< setw(12) << canetas; cout <<'\n'<<"Cadernos "<< setw(12) << cadernos; cout << endl; system("PAUSE"); return 0; }
Parte inteira inalterada
Imprimir o ponto decimal
Tamanho de campos com
cadeias de caracteres
//ProgC013c - Com tamanho de campo com cadeias de caracteres //Usa manipulador setw
#include <iostream> #include <cstdlib> #include <iomanip> using namespace std; int main(){
cout <<'\n'<<"OBJETO "<< setw(12)<<"CODIGO"<<endl; cout <<'\n'<<"Lapis "<< setw(12)<<"WQR";
cout <<'\n'<<"Borrachas "<< setw(12)<<"ASO"; cout <<'\n'<<"Canetas "<< setw(12)<<"KPX"; cout <<'\n'<<"Cadernos "<< setw(12)<<"JFI"; cout << endl; system("PAUSE"); return 0;
BAC004-Informática-Prática-Fabiana C Guedes
Manipuladores de bases
numéricas
//ProgC014.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int n=65;
/*quando coloca-se hex, oct e dec, afirmamos que desejamos imprimir
variável com essa base numérica*/
cout <<'\n'<<"Hexadecimal: "<< hex << n;
cout <<'\n'<<"Octal: "<< oct << n;
cout <<'\n'<<"Decimal: "<< dec << n;
cout << endl; system("PAUSE"); return 0;
}
Imprimindo caracteres gráfico
//ProgC015.cpp - Caracteres gráficos#include <iostream> #include <cstdlib> using namespace std; int main(){
system("cls"); //limpa a tela cout << "\n\n"; cout << "\n\t\xDC\xDC\xDB\xDB\xDB\xDB\xDC\xDC"; cout << "\n\t\xDFO\xDF\xDF\xDF\xDFO\xDF"; cout << "\n\n"; cout << "\n\t\xDC\xDC\xDB \xDB\xDB\xDB\xDB\xDB\xDB"; cout << "\n\t\xDFO\xDF\xDF\xDF\xDF\xDFOO\xDF"; cout << "\n\n"; cout << endl; system("PAUSE"); return 0; Carrinho Caminhão
BAC004-Informática-Prática-Fabiana C Guedes