Técnicas de Programação

Técnicas de Programação

(Parte 1 de 9)

CURITIBA JANEIRO/2002

CURITIBA JANEIRO/2002

Capítulo 1

APOSTILA DE TÉCNICAS DE PROGRAMAÇÃO0
APOSTILA DE TÉCNICAS DE PROGRAMAÇÃO1
I. CONTRATO DIDÁTICO8
I. INFORMAÇÕES GERAIS8
I. SISTEMA DE AVALIAÇÃO8
I. O PROGRAMA DE APRENDIZAGEM (P.A.)9
I. APRESENTAÇÃO DO PROGRAMA DE APRENDIZAGEM (P.A.)10
I. CONTEÚDO PROGRAMÁTICO:10
I. BIBLIOGRAFIA RECOMENDADA:10
1. INTRODUÇÃO À PROGRAMAÇÃO: ALGORITMOS1
1.1. EXEMPLOS1
1.2. ALGORITMOS EM PORTUGOL12
1.3. PORTUGOL12
1.4. VARIÁVEIS13
1.4.1. DECLARAÇÃO DE VARIÁVEIS13
1.4.1.1. Tipos de Variáveis14
1.4.1.2. Identificadores de Variáveis14
1.4.2 CONSTANTES16
1.5. ESTRUTURA DO ALGORITMO EM PORTUGOL16
1.5.1. COMANDO DE ATRIBUIÇÃO (<-)16
1.5.2. OPERADORES ARITMÉTICOS17
1.5.3. ENTRADA E SAÍDA DE DADOS18
1.5.4. REGRAS PARA ESCREVER ALGORITMOS EM PORTUGOL19
1.5.5. EXERCÍCIOS19
1.6. COMANDOS DE CONTROLE19
1.6.1. DESVIO CONDICIONAL19
1.6.1.1. Operadores Lógicos19
1.6.1.2. Operadores Relacionais20
1.6.1.3. Desvio Condicional Simples20
1.6.1.4. Desvio Condicional Composto21
1.6.2. LAÇOS DE REPETIÇÃO (LOOP)23
1.6.2.1. Comando: enquanto/faça24
1.6.2.2. Comando: para / até / faça26
2. PROGRAMAÇÃO EM LINGUAGEM C28

Capítulo 1

2.1.1. DECLARAÇÃO DE VARIÁVEIS28
2.1.2. COMANDO DE ATRIBUIÇÃO:30
2.1.3. BLOCOS DE COMANDOS:30
2.2. BORLAND C++ BUILDER31
2.2.1. O AMBIENTE DE DESENVOLVIMENTO31
2.2.2. A INTERFACE DE DESENVOLVIMENTO32
3.2.2.1. Barra de Componentes32
2.2.2.2. Formulário (form)32
2.2.2.3. Barra de Propriedades3
2.2.3. A CRIAÇÃO DE PROGRAMAS3
A) ENTRADA DE DADOS34
B) ATRIBUIÇÃO35
C) SAÍDA DE DADOS35
E) OPERADORES RELACIONAIS35
2.2.4. PASSOS PARA CRIAR UMA APLICAÇÃO EM C35
a) Abrindo o C++ Builder36
b) Adicionando Formulário36
c) Inserindo Componentes no Formulário36
d) Codificação do Programa37
e) Compilando um Programa38
f) Executando um Programa38
g) Salvando o Programa39
2.2.5. EXERCÍCIOS39
2.3. ESCOPO DE VARIÁVEIS40
2.3.1. VARIÁVEIS LOCAIS40
EXEMPLO40
2.3.2. VARIÁVEIS GLOBAIS41
2.4. DESVIO CONDICIONAL EM C42
2.4.1. DESVIO CONDICIONAL SIMPLES42
2.4.2. DESVIO CONDICIONAL COMPOSTO42
2.4.3. IF’S ANINHADOS43
2.4.4. EXEMPLO43
SOLUÇÃO SEM O USO DE “IF”43
2.4.5. EXERCÍCIO45
2.5. LAÇOS DE REPETIÇÃO EM C46
2.5.1. LOOP PARA/FAÇA (FOR)46
2.5.2. LOOP ENQUANTO/FAÇA (WHILE)46
2.5.3. LOOP FAÇA/ENQUANTO (DO/WHILE)47
2.5.4. EXEMPLO47
2.5.5 EXERCÍCIOS48
2.6. PROCEDIMENTOS EM C49
2.6.1. DEFINIÇÃO49
2.6.2. EXEMPLO 149
2.6.3. PROTÓTIPO52
2.6.4. PARÂMETROS53
2.6.5. EXEMPLO 253
2.7. FUNÇÂO EM C56

Capítulo 1

2.7.2. DECLARAÇÃO56
2.7.3 PARÂMETROS E RETORNO56
2.7.4. EXEMPLO 157
2.7.5. EXEMPLO 259
2.7.6. EXERCÍCIOS61
2.8. INCREMENTOS E DECREMENTOS62
2.8.1. INCREMENTO/DECREMENTO A POSTERIORI62
2.8.2. INCREMENTO/DECREMENTO A PRIORI63
2.8.3. EXERCÍCIO63
2.9. ATRIBUIÇÃO COMPOSTA64
2.9.1. EXERCÍCIO64
2.10. ATRIBUIÇÃO MÚLTIPLA64
2.10.1. EXEMPLO64
2.1. OPERADOR INTERROGAÇÃO (?)65
2.12. NÚMEROS ALEATÓRIOS65
2.12.1. SINTAXE DO COMANDO65
2.12.2. EXEMPLO65
2.13 COMANDO SWITCH/CASE6
2.13.1. SINTAXE DO COMANDO6
2.13.2. EXEMPLO6
2.14. TIMER67
2.14.1. O COMPONENTE TIMER NO C++ BUILDER67
2.14.2. AS PROPRIEDADES DO TIMER68
2.14.3. EXEMPLO68
2.14.4. EXERCÍCIO68
3. ESTRUTUAS HOMOGÊNEAS DE DADOS69
3.1. MATRIZES UNIDIMENSIONAIS (VETORES)69
3.1.1. EXEMPLOS69
3.1.2. INDEXAÇÃO69
3.1.3. EXEMPLO70
3.1.4. EXERCÍCIO71
3.2. ORDENAÇÃO DE VETORES71
3.2.1. ALGORITMO DE ORDENAÇÃO (BOLHA)71
3.2.2. EXERCÍCIO72
3.3. STRINGS73
3.3.1.EXEMPLO 173
3.3.2.EXEMPLO 274
3.3.3. COPIANDO STRINGS74
3.3.4. COMPARAÇÃO DE STRINGS75
3.3.5. TAMANHO DE STRINGS75
3.3.6. COMPARAÇÃO DE ELEMENTOS DA STRING76
3.3.7. CONVERSÃO DE TIPOS76
3.3.7.1. convertendo valores numéricos para caracter7
3.3.7.2. convertendo string para valores numéricos7
3.3.8 EXERCÍCIOS78

Capítulo 1

3.4.1. MATRIZES BIDIMENSIONAIS79
3.4.2. MATRIZES MULTIDIMENSIONAIS80
3.4.3. MATRIZES DE STRINGS80
3.4.4. EXERCÍCIOS82

4 9) DESENVOLA UM PROGRAMA QUE PERMITA MOVIMENTAR O ELEMENTO 1 DA MATRIZ ABAIXO EM UMA DIREÇÃO ALEATÓRIA A CADA 1S. O MOVIMENTO DO ELEMENTO NÃO PODE

EXTRAPOLAR OS LIMITES DA MATRIZ82
4. PONTEIROS EM C83
4.1. DEFINIÇÃO83
4.2. DECLARAÇÃO DE UM PONTEIRO84
4.3. EXEMPLOS85
4.4. PONTEIROS PARA MATRIZ87
4.5. VETORES DE PONTEIROS89
4.5.1. EXEMPLO 189
4.5.2. EXERCÍCIO91
4.5.3. EXEMPLO 291
4.5.4. EXERCÍCIOS92
5. ALOCAÇÃO DINÂMICA DE MEMÓRIA93
5.1. INTRODUÇÃO93
5.2. COMANDO DE ALOCAÇÃO93
5.2.1. EXEMPLO DE ALOCAÇÃO USANDO O COMANDO MALLOC()93
5.2.2. MELHORANDO O USO DE PONTEIROS96
5.3. EXERCÍCIOS97
5.4. PORTABILIDADE97
5.4.1. EXEMPLO DO USO DE SIZEOF98
5.5. EXERCÍCIOS98
6. ARQUIVOS EM C103
6.1. PONTEIRO DE ARQUIVO103
6.2. ABRINDO ARQUIVOS103
6.2.1. ARQUIVOS TIPO TEXTO104
6.2.2. ARQUIVOS BINÁRIOS105
6.3. ABRINDO UM ARQUIVO PARA ESCRITA105
6.3.1. OBSERVAÇÕES106
6.4. ABRINDO UM ARQUIVO PARA LEITURA107
6.5. FECHANDO UM ARQUIVO107
6.6. COMANDOS DE ESCRITA E LEITURA108
6.6.1. FPUTC()108
6.6.2. FGETC()110
6.6.3. EXERCÍCIO COM FPUTC() E FGETC()1

Capítulo 1

6.8. LEITURA DE STRINGS COM FGETS()112
6.9. EXERCÍCIOS COM FPUTS() E FGETS()113
6.10. LEITURA COM FREAD()113
6.1. GRAVAÇÃO COM FWRITE()14
6.12. GRAVAÇÃO COM FPRINTF()115
6.13. LEITURA COM FSCANF()115
6.14. EXERCÍCIOS116
7. REGISTROS117
7.1. DEFINIÇÃO117
7.2. INICIALIZAÇÃO117
7.2.1. EXEMPLO 1118
7.2.2. EXEMPLO 2118
7.3. ACESSO AOS ELEMENTOS DA ESTRUTURA118
7.4. EXERCÍCIO119
7.5. MATRIZES DE ESTRUTURAS119
7.5.1.EXEMPLO119
7.5.2. EXERCÍCIO120
7.6. USO DE TYPEDEF122
7.6.1. EXEMPLO122
7.6.2. EXEMPLO 2122
7.7. GRAVAÇÃO E LEITURA DE REGISTROS123
7.7.1 EXEMPLO123
7.7.2.EXERCÍCIO123
7.8. PONTEIROS PARA REGISTROS124
7.8.1.EXEMPLO124
8. GRÁFICOS EM C127
8.1. INTRODUÇÃO127
8.2. DESENHANDO LINHAS127
8.3. USANDO O PAINTBOX129
8.4. COMPONENTE PANEL130
8.5. DESENHANDO RETÂNGULOS131
8.6. DESENHANDO ELIPSES132
8.7. DESENHANDO PONTOS (PIXELS)133
8.8. EXEMPLO133
8.9 EXERCÍCIOS137
9. LISTAS LINEARES138
9.1. FILA138
9.1.1. DEFINIÇÃO138
9.1.2. OBJETIVO138

Capítulo 1

9.2. FILA CIRCULAR141
9.3. PILHA143
9.3.1. DEFINIÇÃO143
9.3.2. EXEMPLO143
9.4. EXERCÍCIOS144
9.5. LISTAS ENCADEADAS145
9.6. EXEMPLO146
9.7. EXERCÍCIO147
9.8. EXEMPLO147
9.9. OPERAÇÕES COM LISTA ENCADEADA148
9.10. EXEMPLO149
9.1. LISTAS DUPLAMENTE ENCADEADAS151
9.12. EXEMPLO151
9.13. EXEMPLO152
10. RECURSIVIDADE155
10.1. INTRODUÇÃO155
10.2. EXEMPLO155
10.3. EXERCÍCIOS156
1.EXERCÍCIOS COM VETORES157
12 -EXERCÍCIOS COM MATRIZES158
13. EVENTOS DE FORMULÁRIO E VARIÁVIES EXTERNAS160
13.1. EXERCÍCIO PROPOSTO160
13.2. LISTAGEM DO PROGRAMA161
13.2.1. UMEDIA1.CPP161
13.2.2. UMEDIA.CPP162
14. ROTINAS DE ORDENAÇÃO164
15.1. BITBTN167
15.1.1. PRINCIPAIS PROPRIEDADES167
15.1.2. EXEMPLO168
15.2 CHECKBOX168
15.2.1. PRINCIPAIS PROPRIEDADES168
15.2.2. EXEMPLO169
15.3. COMBOBOX169
15.3.1. PRINCIPAIS PROPRIEDADES169

Capítulo 1

15.4. LISTBOX171
15.4.1. PRINCIPAIS PROPRIEDADES171
15.4.2. EXEMPLO171
15.5. PAGECONTROL172
15.5.1. PRINCIPAIS COMANDOS173
15.5.2. EXEMPLO173
15.6. RADIOBUTTON174
15.6.1. PRINCIPAIS PROPRIEDADES174
15.6.2. EXEMPLO174
15.7. RADIOGROUP175
15.7.1. PRINCIPAIS PROPRIEDADES175
15.7.2. EXEMPLO175
15.8. SCROLLBAR176
15.8.1. PRINCIPAIS PROPRIEDADES177
15.8.2. EXEMPLO177
15.9. SPEEDBUTTON178
15.9.1. PRINCIPAIS PROPRIEDADES178
15.9.2. EXEMPLO178
15.10. STRINGGRID179
15.10.1. PRINCIPAIS PROPRIEDADES179
15.10.2. EXEMPLO180
15.1. TABCONTROL180
15.1.1. PRINCIPAIS PROPRIEDADES180

Capítulo 1

I. Contrato Didático i. INFORMAÇÕES GERAIS

· Todas as aulas (teoria e prática) serão em laboratório; então todos deverão estar familiarizados com o manuseio dos computadores, pois o conteúdo da aula será fornecido pela internet através do endereço http://www.las.pucpr.br/rudek

• Trazer disquetes para armazenar os trabalhos de aula;

• Quem necessitar pode (e deve) usar os laboratórios da PUC para aprender a usar o computador; cada laboratório possui um monitor responsável que pode ajudar nas dúvidas, fora dos horários de aula;

• Observar as normas de utilização do laboratório e das aulas de TP1, principalmente em relação ao zelo pelos equipamentos e atenção às atividades de aula; atividades do Laboratório de Automação e Sistemas (LAS) podem ser obtidas diretamente no site do LAS através do endereço w.las.pucpr.br.

i. SISTEMA DE AVALIAÇÃO

• A avaliação é contínua durante todo o curso. Será composta de provas, trabalhos, exercícios em sala (participação);

• A nota semestral será composta de 3 notas parciais:, sendo:

o 1.ª parcial : prova (80%) + exercícios (20%); o 2.ª parcial: prova (60%) + exercícios (10%) + trabalhos (30 %); o 3.ª parcial: prova (50%) + exercícios (20%) + trabalhos (30 %);

OBS: a forma de avaliação das parciais, pode variar de acordo com o andamento das aulas e nível de aprendizado0 da turma.

não serão cosiderados, ou terão nota reduzida (2,0 pts por dia de atraso), de acordo com critério do professor.

• Faltas: no máximo 12 faltas (4 dias de aula). Mais de 12 faltas o aluno estará automaticamente reprovado por falta, independente das notas que possua.

Capítulo 1 i. O PROGRAMA DE APRENDIZAGEM (P.A.)

Este programa de aprendizagem explora o estudo de algoritmos e programação em linguagem C. Para aprovação neste semestre o aluno deverá estar apto a raciocinar e desenvolver a sua capacidade de abstração, para a criação de algoritmos e programas elementares.

As técnicas de programação serão vistas através da utilização de uma pseudolinguagem em português, denominada "Portugol". Assim, o aluno poderá escrever algoritmos e aplicar as técnicas de desenvolvimento para serem usadas com qualquer linguagem de programação. Para este P.A., será utilizada a linguagem C padrão, em ambiente

Windows.

Na seção seguinte será apresentado o conteúdo programático de Técnicas de Programação I e I (TPI e TPI ).

Capítulo 1

I. Apresentação do Programa de Aprendizagem (P.A.) i. CONTEÚDO PROGRAMÁTICO:

. Princípios de funcionamento; . Sistemas Operacionais (DOSÒ e WINDOWSÒ);

. Sistemas Numéricos; . Memória e Dispositivos de Armazenamento;

. Linguagens de Programação; - Algoritmos: Introdução;

- Introdução a Linguagem C : Principais comandos e programação para Windows;

- OBS: Conteúdo das aulas em w.las.pucpr.br/rudek i. Bibliografia Recomendada:

1. Algoritmos e Estruturas de Dados; Guimarães e Lages; LTC – Livros Técnicos e Científicos.

2. Estruturas de Dados Usando C; A. Tanenbaum; Makron Books

3. Dominando Algoritmos com C; Kyle Loundon; Ed. Ciência Moderna. 4. C Completo e Total; Herbert Schildt; Makron Books;

5. C A Linguagem de Programação Padrão Ansi; Brian W. Kerninghan, Dennis M. Ritchie; Editora Campus;

6. C++ Builder 5 - Guia Prático; César A Mateus. Ed. Érica (w.erica.com.br); 7. C++ Builder 5 Developers Guide; J. Hollinworth, D. Butterfield, et al. Ed. SAMS;

8. C Completo e Total; Herbert Schildt; Makron Books; 9. Internet.

Capítulo 1

1. INTRODUÇÃO À PROGRAMAÇÃO: ALGORITMOS

Várias definições de algoritmos estão presentes na literatura (ver bilbliografia indicada). De forma geral um algoritmo pode ser definido como:

Um algoritmo representa de forma estruturada, um padrão de comportamento de eventos ou sequência de ações, que levam a um resultado esperado.

Resumindo: algoritmo = como definir o problema, esquematizar, exercício do raciocínio; técnicas de programação = como operacionalizar, recursos, exercício da implementação.

1.1. Exemplos a) Seqüência de ações para chegar ao trabalho/universidade:

Oufi chegar ao destino
fi pegar o carro

Acordar ® levantar fi tomar café fi pegar o ônibus

Note que, para cada ação acontecer, é necessário que a ação imediatamente anterior tenha sido executada. Note também que, cada ação pode conter outros eventos associados (outros algoritmos).

b) Manuais de montagem e utilização de equipamentos;

(Parte 1 de 9)

Comentários